문제

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));
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top