Salve ho creato un model con una sola regola di validazione
public function rules()
{
return array(
// nome obbligatorio
array('nome', 'required'),
// lunghezza compresa tra 3 e 100 caratteri
array('nome', 'length', 'min'=>3, 'max'=>100),
);
}
Questa la view :
<?php
/* @var $this fIL,Controller */
/* @var $model SearchForm */
/* @var $form CActiveForm */
$this->pageTitle=Yii::app()->name . ' Ricerca Nome';
$this->breadcrumbs=array(
'Ricerca Nome',
);
?>
<h1>Ricerca</h1>
<?php if(Yii::app()->user->hasFlash('search')): ?>
<div class="flash-success">
<?php echo Yii::app()->user->getFlash('search'); ?>
</div>
<?php else: ?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl('nome/risultati'),
'method'=>'GET',
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'nome'); ?>
<?php echo $form->textField($model,'nome',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'nome'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Ricerca'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
<?php endif; ?>
Queste le action search e risultati :
public function actionSearch()
{
/**
* Displays the contact page
*/
$model=new SearchForm;
if($model->validate()){
if(isset($_GET['SearchForm'])){
$dati=$model->attributes=$_GET['SearchForm'];
}
}
$this->render('search',array('model'=>$model));
}
public function actionRisultati()
{
/**
* Displays the contact page
*/
$data[nome]=Yii::app()->request->getParam('nome');
// connessione a MySQL con yii
$connection=Yii::app()->db;
// query
$sql = "SELECT * FROM nomi where nome like '%$data[nome]%' ";
// esecuzione della query
$command=$connection->createCommand($sql);
//prendo i risultati
$data[row]=$command->queryAll();
//conto i risultati
$data[numRighe]=$command->execute(); // execute the non-query SQL
$data[dataReader]=$command->query();
//Stampo il numero di righe
//echo "Numero righe: $numRighe";
$this->render('risultati',$data);
}
HO alcune domande da fare:
1 l’action Search è corretta , vorrei che facesse il controllo in base alle url e mi inviasse i dati via GET a risultati
2 appena accedo alla pagina ricerca ho :
Please fix the following input errors:
Nome cannot be blank.
Nome *
[il campo input type text]
Nome cannot be blank.
Nelle rules avevo impostato i valori amin 3 max 100 mi da l’errore perchè è required , il controllo si potrebbe fare sul click del button?
3- NOn riesco a catturare i risultati nella url ho (cercando casa):
/risultati?SearchForm[nome]=casa&yt0=Ricerca
nella action risultati ho provato così :
$data[nome]=Yii::app()->request->getParam('nome');
Ma niente ; i dati sono recuperabili anche dalla action per poter essere manipolati (come volevo fare io) ?
Nella view ho provato così :
<?php echo 'Nome:'.$nome;
echo 'Nome: '.Yii::app()->request->getParam('SearchForm[nome]');
echo 'Nome: '.Yii::app()->request->getQuery('SearchForm[nome]');
echo 'Nome: '.Yii::app()->request->getParam('nome');
echo 'Nome: '.Yii::app()->request->getQuery('nome');
echo 'Nome: '.$_GET['nome'];
echo 'Nome: '.$_GET['SearchForm[nome]'];
?>
Ma escono tutti vuoti