';价值';函数不';在Yii2视图中不工作

';价值';函数不';在Yii2视图中不工作,yii2,Yii2,在我看来,我正在尝试添加'value'函数,如果id=0,则显示字段,否则它不会显示它。我试着这样做: echo $form->field($model, 'test', [ 'options' => [ 'class' => $twoColumns . ' required', 'value' => function ($model) { return $model->testvar == 0 ? 'Test' : null;

在我看来,我正在尝试添加
'value'
函数,如果
id=0
,则显示字段,否则它不会显示它。我试着这样做:

echo $form->field($model, 'test', [
'options' => [
    'class' => $twoColumns . ' required',
    'value' => function ($model) {
        return $model->testvar == 0 ? 'Test' : null;
    }
]
])
我已将函数添加到
“value”
,但不知何故,它不起作用。有人能解释一下为什么吗


我得到了
htmlspecialchars
error

这里的闭包不受支持,也没有理由使用它

您只需要以下内容:

$model->interest = null;
if ($model->is_interest_variable == 0) {
    $model->interest = 'Test';
}
echo $form->field($model, 'interest', [
'addon' => [
    'append' => [
        'content' => '%',
    ],
],
'options' => [
    'class' => $twoColumns . ' required',
]
])->textInput([
    'placeholder' => '0.0000', 
    'class' => 'form-control amount-4'
]); 

这里不支持闭包,也没有理由使用它

您只需要以下内容:

$model->interest = null;
if ($model->is_interest_variable == 0) {
    $model->interest = 'Test';
}
echo $form->field($model, 'interest', [
'addon' => [
    'append' => [
        'content' => '%',
    ],
],
'options' => [
    'class' => $twoColumns . ' required',
]
])->textInput([
    'placeholder' => '0.0000', 
    'class' => 'form-control amount-4'
]); 

也许更好的方法是使用if语句在控制器中编写私有函数?您可以在呈现表单字段之前的任何时间点设置此属性。通常它是在控制器中完成的。也许更好的方法是在控制器中用if语句编写私有函数?在呈现表单字段之前,基本上可以在任何点设置此属性。通常在控制器中完成。