yii フォームでエラーを表示することに問題があります。
これは私のコントローラーです:
$custom_user->attributes = $_POST['CustomUser'];
if($custom_user->validate())
{
...
save
...
}
else
{
$custom_user->addError('username', 'Error X');
$this->redirect(array('access/index'),
array('user'=>$custom_user,
'tab'=>$tab_person,
));
}
これは私のインデックスビューです:
<?php $form=$this->beginWidget('BaseForm', array(
'id'=>'user-form',
'action'=>Yii::app()->createUrl('person/createUser'))); ?>
<?php echo $form->errorSummary($user);?>
<div class="right">
<?php echo $form->textField($user,'username',array('size'=>30,'maxlength'=>255)); ?>
<br/><?php echo $form->error($user,'username'); ?>
</div>
...
...
<div style="float: left;">
<?php echo $form->dateField($user,'valid_from',null,'valid_from_formated'); ?>
<br/><?php echo $form->error($user,'valid_from'); ?>
</div>
ここに私のベースフォームがあります
public $enableClientValidation = true;
public $enableAjaxValidation = true;
public $clientOptions = array( 'hideErrorMessage'=>false,
'validateOnSubmit'=>true,
'validateOnChange'=>false,
'validateOnType'=>false,
'afterValidateAttribute' => 'js:enableSubmitAV',
'afterValidate' => 'js:submitFormAV'); // always fires this after
問題は次のとおりです。
「$form->errorSummary($user);」は空で、「$form->error($user,'username');」の下に表示されます。
しかし、Firebug を見ると、「応答」タブの下に表示されます。
{"CustomUser_valid_until":["有効期限は \"20121127\" より大きくなければなりません。"]}
私のルールがうまく機能することを意味するので、それは良いことです。しかし、エラーは表示されません。これではなく、コントローラーに追加したエラー「エラーX」でさえ表示されません...(elseステートメントを通過したと確信しています。試してみました)。
それで、誰でもアイデアを思いつくことができますか?
私を読んでくれてありがとう。おおよその英語でごめんなさい。
良い一日を過ごしてください :)
マイケル