yii2 - 模型加载函数没有设置一些模型属性
yii2 - model load function does not set some model attributes
我正在开发 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,
]);
}
提交表单后,我用 die()
登录了 Yii::$app->request->post()
并且所有三个参数 amount
、receiptNumber
、description
都存在于 post 与他们正确的价值观(一切都是正确的)。但是调用 $modelForm->load
函数后,这是我的模型属性:
$amount => 1000,
$receiptNumber => 887412141,
$description => NULL,
$description
始终为 NULL!我不知道这个领域有什么问题。我的代码有问题吗?
在视图文件
中从描述<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
中删除 $ 符号
可能您的代码中没有为 description
属性添加规则。
查看rules()
方法确认。
默认情况下,方法 load()
仅将 "safe" 值应用于属性,如果在当前场景中有规则,则值被视为 "safe"。
类似的问题通常可能是由 "safe attributes"(如 Bizley 所说)引起的。
在具有许多规则和场景的复杂情况下,您可以通过 Model::safeAttributes 检查当前的安全属性。
在加载数据之前立即执行它。
我正在开发 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,
]);
}
提交表单后,我用 die()
登录了 Yii::$app->request->post()
并且所有三个参数 amount
、receiptNumber
、description
都存在于 post 与他们正确的价值观(一切都是正确的)。但是调用 $modelForm->load
函数后,这是我的模型属性:
$amount => 1000,
$receiptNumber => 887412141,
$description => NULL,
$description
始终为 NULL!我不知道这个领域有什么问题。我的代码有问题吗?
在视图文件
中从描述<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
中删除 $ 符号
可能您的代码中没有为 description
属性添加规则。
查看rules()
方法确认。
默认情况下,方法 load()
仅将 "safe" 值应用于属性,如果在当前场景中有规则,则值被视为 "safe"。
类似的问题通常可能是由 "safe attributes"(如 Bizley 所说)引起的。
在具有许多规则和场景的复杂情况下,您可以通过 Model::safeAttributes 检查当前的安全属性。 在加载数据之前立即执行它。