2013-11-04 47 views
1

我有小部件,并在布局中调用它,为什么不重定向到网站/搜索?Yii小部件,验证后不工作重定向

<?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)); 
    } 
} 

形式

<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> 

它是如何做正确的拉帮结派的Yii来验证?对不起,我的英语

回答

1

尝试,而不是:

$this->owner->redirect(array('site/search', 'model' => $this->model->attributes)); 

化妆:

$route_params = $this->model->attributes; 
array_unshift($route_params, 'site/search'); 
$this->owner->redirect($route_params); 

它必须创建URL /site/search?field1=va1&field2=val2...

卜T I看代码:你必须变种作品太...比你需要正确处理$ _GET参数,可以如:

public function run() 
{ 
    if(!empty($_GET)) 
    { 
     $model = new ModelAR(); // you ActiveRecord class 
     $model->attributes = $_GET; 
     $this->render('search', array('model' => $model)); 
    } 
} 
+0

您的代码不起作用,什么是错在这里 – Dmitry

+0

是什么错误?您必须将'ModelAR'更改为您的模型,该模型使用重定向 – CreatoR