Yii2 hiddenInput对选项值没有反应

时间:2017-10-28 22:53:08

标签: yii2 active-form

通过更改隐藏字段中的值来更改模型中的图像字段:

查看:

<?= HTML::activeHiddenInput($model, 'image_clean', [
    'id' => 'cleaner',
    'name' => 'cleaner',
    'value' => false
])
?>
<?=
Html::button('Remove logo', [
    'id' => 'btn_clean',
])
?>

在视图结束时:

    <?php
    $this->registerJs(<<<JS
    $('#btn_clean').on('click', function() {
        alert('Going to remove logo'); // Reachable!
        $('#cleaner').val(true);
    });
JS
    );
    ?>

型号:

public $image_clean;    // Remove logo

public function rules() {
    return [
        //...
        [['image_clean'], 'boolean'],
        //...
    ];
}

public function attributeLabels() {
    return [
        //...
        'image_clean' => 'Remove logo',
        //...
    ];
}

public function beforeValidate() {
    if($this->image_clean) { }  // Never!
    return parent::beforeValidate();
}

public function beforeSave($insert) {
    if($this->image_clean) { } // Never!
    return parent::beforeSave($insert);
}

不幸的是,模型的beforeValidate / beforeSave中的$ this-&gt; image_clean始终为false。为什么呢?

Javascript btn_clean处理程序可以正常工作。

1 个答案:

答案 0 :(得分:0)

Hiddeninput的名称会覆盖默认名称。 所以,我只是删除'name'=&gt; '清洁器'。这不是必需的