I have widget and call it in the layout, why is not redirect to site/search?
<?php
class CSearch extends CWidget
{
public $model;
public function init()
{
$this->model = new SearchForm();
if(Yii::app()->request->isAjaxRequest && Yii::app()->request->getPost('FormSearch'))
{
$this->model->attributes = Yii::app()->request->getParam('FormSearch');
if($this->model->validate())
{
$this->owner->redirect(array('site/search', 'model' => $this->model->attributes));
}
}
}
public function run()
{
$this->render('search', array('model' => $this->model));
}
}
form
<div class="header-search">
<?php $form = $this->beginWidget('CActiveForm', array(
'id' => 'search-form',
'enableAjaxValidation' => true,
'enableClientValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
'validateOnType' => false),
'htmlOptions' => array('class' => 'form-search'),
)); ?>
<?php echo $form->error($model, 'search'); ?>
<div class="input-append">
<?php echo $form->textField($model, 'search', array('class' => 'span2', 'placeholder' => 'Поиск')); ?>
<?php echo CHtml::htmlButton('<i class="icon-search"></i>', array('class' => 'btn', 'submit' => array('site/search')))?>
</div>
<?php $this->endWidget(); ?>
</div>
How is it done properly validated by means of a clique Yii? sorry for my english
Try instead:
$this->owner->redirect(array('site/search', 'model' => $this->model->attributes));
make:
$route_params = $this->model->attributes; array_unshift($route_params, 'site/search'); $this->owner->redirect($route_params);
It's must create URL /site/search?field1=va1&field2=val2...
But I look at code: your variant must works too... Than you need correctly process $_GET params, such as:
public function run() { if(!empty($_GET)) { $model = new ModelAR(); // you ActiveRecord class $model->attributes = $_GET; $this->render('search', array('model' => $model)); } }