yii2:取决于Action的条件显示/显示字段

时间:2015-02-27 13:49:06

标签: javascript php validation yii2

如何在表单或模型中的验证规则的字段级添加条件,该字段将保持隐藏在action/create上并仅显示在action/update上。

例如我有一个字段,我只想在更新屏幕中显示而不是在创建屏幕上显示。

$form->field($model, 'discharged')->checkBox();

好的,我已按照模型

中的评论中的建议更新了代码
public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios['update'] = ['discharged', 'discharge_date'];
        return $scenarios;
    }

然后在规则中

[['discharged', 'discharge_date'], 'required', 'on' => 'update'],

在控制器的更新操作中我添加了:

$model->scenario = 'update';

但是上面的代码会生成更新场景中所需的字段,我希望这些字段在创建操作中保持隐藏状态,并且仅在更新时显示。

更新 form.php的

<?php 

    echo Tabs::widget([
    'items' => [
     .....

    '<div class="col-lg-6">'.
                if(Yii::$app->controller->action->id == 'update') {
                $form->field($model, 'discharged')->checkBox()
                }
                        .'</div>'.

我不在想法,我应该如何在更新屏幕中显示字段。 感谢。

1 个答案:

答案 0 :(得分:3)

1)您可以为表单呈现不同的视图。

create查看:

$this->render('_create-form', ['model' => $model];

update查看:

$this->render('_update-form', ['model' => $model];

2)如果您只想使用一个表单并防止代码重复,可以添加检查所需的操作:

form查看:

use Yii;

...

if ($this->context->action->id == 'update') {
    echo $form->field($model, 'discharged')->checkBox();
}

对于评论中建议的验证使用方案。