我有一个包含数组元素的表单,我已经验证了它。我无法通过使用内置验证规则对其进行验证,因为数据库中不存在这些元素。我将数据序列化并将它们保存在数据库中的单个字段中。所以我尝试使用自定义验证进行验证。 我的实际问题是数组字段正在验证,但它没有在相应的字段中显示验证错误消息。
这是表格
<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>
&#13;
模型
.....
['shipper', function ($attribute, $params) {
if (!filter_var($this->{$attribute}['email'], FILTER_VALIDATE_EMAIL)) {
$this->addError('shipper', 'The email format is invalid!');
}
}],
....
答案 0 :(得分:0)
您可以向模型类添加属性,如下所示:
class MyModel extends \yii\db\ActiveRecord {
public $shipperAddressLine1;
public $shipperAddressLine2;
public $shipperCity;
public $shipperPin;
...
}
然后,您可以为它们添加验证规则,就像数据库属性一样。