【问题标题】:Yii widget, does not work redirect after validationYii 小部件,验证后无法重定向
【发布时间】:2013-11-04 09:09:15
【问题描述】:

我有小部件并在布局中调用它,为什么不重定向到站点/搜索?

<?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 进行正确验证?对不起我的英语

【问题讨论】:

    标签: yii yii-components


    【解决方案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&amp;field2=val2...

    但我看代码:您的变体也必须有效...比您需要正确处理 $_GET 参数,例如:

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

    【讨论】:

    • 什么是错误?您必须将 ModelAR 更改为您的模型,该模型在重定向中使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2012-09-12
    • 2019-09-10
    • 1970-01-01
    • 2020-05-31
    • 2011-11-08
    相关资源
    最近更新 更多