0
配列要素を含むフォームがあり、検証する必要があります。要素がデータベースに存在しないので、組み込みの検証ルールを使用して検証できません。私はデータをシリアル化してデータベースの単一のフィールドに保存しています。だから、私はカスタム検証で検証をやろうとしました。 私の実際の問題は、配列フィールドは検証中ですが、対応するフィールドに検証エラーメッセージが表示されません。配列フォーム要素の検証からyii2
これは、あなたは、次のようなあなたのモデルクラスに属性を追加することができ、フォーム
<div class="col-md-6">
<?php Portlet::begin(['title' => t('Shipper')]) ?>
<?= $form->field($model, 'shipper[name]')
->textInput(['maxlength' => true])->label(t('Name'))?>
<div class="row">
<div class="col-md-8">
<?= $form->field($model, 'shipper[address_line1]')
->textInput(['maxlength' => true])->label(t('Address Line 1')) ?>
<?= $form->field($model, 'shipper[address_line2]')
->textInput(['maxlength' => true])->label(t('Address Line 2')) ?>
</div>
<div class="col-md-4">
<?= $form->field($model, 'shipper[city]')
->textInput(['maxlength' => true])->label(t('City')) ?>
<?= $form->field($model, 'shipper[pin]')
->textInput(['maxlength' => true])->label(t('Pin Code')) ?>
</div>
</div>
モデル
.....
['shipper', function ($attribute, $params) {
if (!filter_var($this->{$attribute}['email'], FILTER_VALIDATE_EMAIL)) {
$this->addError('shipper', 'The email format is invalid!');
}
}],
....
OK。それは問題ありませんが、私のデータベースには、これらのデータを保存するための荷送人という名前のフィールドが1つしかありません(住所1、住所2、市、ピンなど)。私はこれらの値をシリアル化してデータベースの荷送人フィールドに保存しています。 –
どうすればいいの? –
私はフィールドに 'serializedAttributes' =>を を直列化する方法この[ 'クラス' => SerializedAttributes ::クラス名()、 '属性' => [ '荷主']、 ]、 –