yii2 beforeSave 与模态下拉列表

yii2 beforeSave with modal dropdownlist

我正在尝试实现一个 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;
}

抱歉,我的英语不好。

提前致谢。

那是因为你在 if 条件中分配值,而不是检查它们。

if ($tipo_fatura->index = 2) {

注意这里的=运算符,应该是==。其他条件也一样。

赋值是一个有效的操作,PHP不会抛出任何错误或通知。因此,一个好的经验法则是始终在条件中使用左侧的值部分,如下所示:

if ( 2 == $test ) {

    // do something
}

在这种情况下,即使您在此处错误地添加了一个 =,PHP 也会抛出一个 PHP Parse error,因为 2 = $test 将不是有效操作。