Я работаю над приложением PHP Yii2. У меня есть странная проблема с функцией yii2 yii yii\base\Model.load
. Вот моя проблема:
У меня есть модель формы под названием PaymentIncreaseBalanceForm
как 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! Я не знаю, в чем проблема с этим полем. Есть ли проблемы с моим кодом?
Вероятно, в вашем коде не добавлено правило для атрибута description
.
Проверьте метод rules()
чтобы подтвердить его.
По умолчанию метод load()
применяет только «безопасные» значения к атрибутам, а значение считается «безопасным», если в текущем сценарии есть правило.
Удалить $ sign из описания <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
В файле вида
Подобные проблемы часто могут быть вызваны «безопасными атрибутами» (как говорят Bizley).
В сложных случаях со многими правилами и сценариями вы можете проверить текущие безопасные атрибуты с помощью Model :: safeAttributes . Выполните его непосредственно перед загрузкой данных.