我正在开发PHP Yii2应用程序。我对yii2 yii\base\Model.load
函数有一个奇怪的问题。这是我的问题:
我有一个名为PaymentIncreaseBalanceForm
的表单模型,如下所示:
class PaymentIncreaseBalanceForm extends yii\base\Model {
public $amount;
public $receiptNumber;
public $description;
...
}
以下是我的观看文件的一部分:
<?= $form->field($model, 'amount')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'receiptNumber')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
这是我的控制器动作:
public function actionIncreaseBalance()
{
$modelForm = new PaymentIncreaseBalanceForm();
if ($modelForm->load(Yii::$app->request->post()))
{
//some logic
}
return $this->render('increase-balance', [
'model' => $modelForm,
]);
}
提交表单后,我使用Yii::$app->request->post()
记录了die()
,并且帖子中存在所有三个参数amount
,receiptNumber
,description
及其正确的值(每件事都是对的)。但在调用$modelForm->load
函数后,这是我的模型属性:
$amount => 1000,
$receiptNumber => 887412141,
$description => NULL,
$description
总是为NULL!我不知道这个领域有什么问题。我的代码有什么问题吗?
答案 0 :(得分:12)
您的代码中可能没有为description
属性添加规则。
检查rules()
方法以确认它。
默认情况下,方法load()
仅对属性应用“安全”值,如果在当前方案中存在规则,则值被视为“安全”。
答案 1 :(得分:1)
从视图文件
中的描述<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
中删除$ sign
答案 2 :(得分:1)
类似的问题通常可能由"safe attributes"引起(如Bizley所说)。
在包含许多规则和方案的复杂情况下,您可以通过Model::safeAttributes检查当前的安全属性。 在加载数据之前立即执行。