到目前为止,我已在我的视图中的CActiveForm小部件中启用了clientValidation,但验证仅适用于我表单上的第一个模型字段,而不适用于来自第二个模型的表格字段...我该怎么做为其他字段启用它还是我需要编写自己的Javascript?我还想知道将所有表单代码放在一个页面中而不是像表格字段的renderPartial那样是否是正确的做法......
这是我的更新视图:
<?php //Yii::app()->clientScript->registerCoreScript('jquery'); ?>
<?php
/* @var $this BookingController */
/* @var $model Booking */
/* @var $bookingRoom BookingRoom */
$this->breadcrumbs=array(
'Bookings'=>array('index'),
$model->id=>array('view','id'=>$model->id),
'Update'
);
$this->menu=array(
array('label'=>'List Booking', 'url'=>array('index')),
array('label'=>'Create Booking', 'url'=>array('create')),
array('label'=>'View Booking', 'url'=>array('view', 'id'=>$model->id)),
array('label'=>'Manage Booking', 'url'=>array('admin'))
);
?>
<h1>Update Booking <?php echo $model->id; ?></h1>
<?php //$this->renderPartial('_form', array('model'=>$model)); ?>
<div class="form">
<button id="btnAdd" type='btnAdd'>Add</button>
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'booking-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false, 'enableClientValidation' => true, 'errorMessageCssClass' => 'error', 'clientOptions'=> array('validateOnSubmit'=>true)
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary(array($model)); ?>
<div class="row">
<?php echo $form->labelEx($model,'customerId'); ?>
<?php echo $form->textField($model,'customerId'); ?>
<?php echo $form->error($model,'customerId'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'date'); ?>
<?php echo $form->textField($model,'date'); ?>
<?php echo $form->error($model,'date'); ?>
</div>
<table id="tblData">
<tbody>
<?php foreach($items as $i=>$item): ?>
<tr>
<td>
<div>
<?php echo $form->labelEx($item,'id'); ?>
<?php echo $form->textField($item,"[$i]id", array('readonly'=>true)); ?>
<?php echo $form->error($item,'id'); ?>
</div>
</td><td>
<td>
<div>
<?php echo $form->labelEx($item,'bookingId'); ?>
<?php echo $form->textField($item,"[$i]bookingId", array('readonly'=>true)); ?>
<?php echo $form->error($item,'bookingId'); ?>
</div>
</td><td>
<div>
<?php echo $form->labelEx($item,'roomId'); ?>
<?php echo $form->dropDownList($item, "[".$i."]roomId", CHtml::listData(
Room::model()->findAll(), 'id', 'id'), array('single'=>'single', 'size'=>1)
); ?>
<?php echo $form->error($item,'roomId'); ?>
</div>
</td><td>
<div>
<?php echo $form->labelEx($item,'startDate'); ?>
<?php echo $form->textField($item,"[$i]startDate"); ?>
<?php echo $form->error($item,'startDate'); ?>
</div>
</td><td>
<div>
<?php echo $form->labelEx($item,'endDate'); ?>
<?php echo $form->textField($item,"[$i]endDate"); ?>
<?php echo $form->error($item,'endDate'); ?>
</div>
</td><td>
<div>
<?php echo $form->labelEx($item,'adults'); ?>
<?php echo $form->dropDownList($item, "[$i]adults", array('1'=>'1',
'2'=>'2',
'3'=>'3',
'4'=>'4',
'5'=>'5'), array('single'=>'single', 'size'=>1)
); ?>
</div>
</td><td>
<div>
<?php echo $form->labelEx($item,'children'); ?>
<?php echo $form->dropDownList($item, "[$i]children", array('0'=>'0',
'2'=>'2',
'3'=>'3',
'4'=>'4',
'5'=>'5'), array('single'=>'single', 'size'=>1)
); ?>
</div>
</td>
<td>
<button type='button'>Delete</button>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
答案 0 :(得分:0)
在错误摘要数组中定义第二个模型,如
<?php echo $form->errorSummary(array($model,$item)); ?>
同样在您的控制器操作中,通过此
检查第二个模型验证$item->validate();