3 つのモデルのデータを収集する Yii フォームを取得しました。私は変更時と送信時にajaxvalidationを使用しています:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'offer-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'clientOptions' => array(
'validateOnChange'=>true,
'validateOnSubmit'=>true,
)
)); ?>
ここでの問題は、最初の 3 つの入力のみが検証されることです。これらの入力のコードは次のとおりです。
1:
<div class="input-bg wide-input">
<?php
//fill this field after selecting newspaper
echo $form->hiddenField($newspaper, 'id'); ?>
<?php echo $form->textField($newspaper, 'name', array('maxlength' => 45, 'placeholder'=>'Krantnaam')); ?>
<?php echo $form->error($newspaper, 'name', array('class'=>'error')); ?>
</div>
<a class="button gray-button">Aanbieden</a>
2 と 3:
<div class="input-bg linked-input">
<?php echo $form->textField($address, 'postalcode', array('maxlength' => 45, 'placeholder'=>'Postcode')) ?>
<?php echo $form->error($address, 'postalcode'); ?>
</div>
<div class="input-bg linked-input">
<?php echo $form->textField($address, 'street_number', array('maxlength' => 45, 'placeholder'=>'Huisnummer')); ?>
<?php echo $form->error($address, 'street_number'); ?>
</div>
これらの 3 つの入力は、 である 2 つのモデルに使用されます$newspaper and $address
。これら 3 つの入力は (変更時および送信時に) 完全に検証され、他の 7 つの入力は検証されません。検証されない入力の 1 つの例:
<div class="input-bg linked-input">
<?php echo $form->textField($offer, 'firstname', array('maxlength' => 45, 'placeholder'=>'Voornaam')); ?>
<?php echo $form->error($offer, 'firstname'); ?>
</div>
最後に、コントローラー コードを投稿します。
$this->performAjaxValidation($offer, 'offer-form');
$this->performAjaxValidation($address, 'offer-form');
$this->performAjaxValidation($newspaper, 'offer-form');
if(Yii::app()->getRequest()->getIsAjaxRequest()) {
echo CActiveForm::validate( array($address));
echo CActiveForm::validate( array($offer));
echo CActiveForm::validate( array($newspaper));
print_r($_POST);
die();
//Yii::app()->end();
}
フォームを送信または変更している場合、目には検証されていないフィールドのエラーを含む JSON が返されますが、エラー状態にはなりません。
間違いか何かを見てくれる人がいるといいのですが。
グリーツ、