我试图实现一个beforeSave函数,它从一个选定的模态下拉列表中相应地将值更改为正数或负数,但它始终相应地更改为第一个if:
这是模态代码:
<?= $form->field($model, 'tipo_fatura')->dropDownList([ 'Fatura' =>
'Fatura', 'Nota de Crédito' => 'Nota de Crédito', ],
['prompt' => '']) ?>
这是型号代码:
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
$tipo_fatura = $this->tipo_fatura;
if ($tipo_fatura->index = 2) {
$this->valor_fatura = 2;
} else if ($tipo_fatura = 'Fatura') {
$this->valor_fatura = 1;
} else {
}
return true;
}
抱歉,我的英语不好。
提前谢谢。
答案 0 :(得分:0)
那是因为你在条件中分配值,而不是检查它们。
if ($tipo_fatura->index = 2) {
请注意=
运算符,它应该是==
。其他条件也是如此。
分配值是一个有效的操作,PHP不会抛出任何错误或通知。因此,一个好的经验法则是在条件中始终使用左侧的值部分,如下所示:
if ( 2 == $test ) {
// do something
}
在这种情况下,即使你错误地在这里添加一个=
,PHP也会抛出PHP Parse error
,因为2 = $test
将无效。