通过更改隐藏字段中的值来更改模型中的图像字段:
查看:
<?= 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处理程序可以正常工作。
答案 0 :(得分:0)
Hiddeninput的名称会覆盖默认名称。 所以,我只是删除'name'=&gt; '清洁器'。这不是必需的