我有一個從另一個模型(團隊has_many team_members)調用渲染部分的Yii窗體。我想通過ajax調用一個局部視圖來添加team/_form中的成員。除ajax驗證(服務器和客戶端)之外的所有作品(調用,顯示,保存)。如果我提交表單,成員的模型不驗證,即使在客戶端,它不驗證必填字段。Yii ClientSide驗證渲染局部不工作
任何線索?
// _形式
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'team-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange'=>true
),
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>
//控制器
public function actionMember($index)
{
$model = new TeamMember();
$this->renderPartial('_member',array(
'model'=> $model, 'index'=> $index
)
,false,true
);
}
public function actionCreate()
{
$model=new Team;
$members = array();
if(isset($_POST['Team']))
{
$model->attributes=$_POST['Team'];
if(!empty($_POST['TeamMember'])){
foreach($_POST['TeamMember'] as $team_member)
{
$mem = new TeamMember();
$mem->setAttribute($team_member);
if($mem->validate(array('name'))) $members[]=$mem;
}
}
$this->redirect(array('team/create','id'=>$model->id,'#'=>'submit-message'));
}
$members[]=new TeamMember;
$this->performAjaxMemberValidation($members);
$this->render('create',array(
'model'=>$model,'members'=>$members
));
}
// _構件
<div class="row-member<?php echo $index; ?>">
<h3>Member <?php echo $index+1; ?></h3>
<div class="row">
<?php echo CHtml::activeLabel($model, "[$index]name",array('class'=>'member')); ?>
<?php echo CHtml::activeTextField($model, "[$index]name",array('class'=>'member')); ?>
<?php echo CHtml::error($model, "[$index]name");?>
</div>
</div>
ProcessOutput
被設置爲true。沒有骰子。 開關renderPartial()
到render()
。沒有骰子。
MEM,coppettim:你是同一個人嗎?如果沒有,爲什麼你編輯這個問題並添加最後一行,你怎麼知道這個? – soju 2013-04-23 17:42:18
@soju:我們不是同一個人。但我們都在研究這個問題。 - 我們都沒能找到答案。 – MEM 2013-04-23 18:00:34
你的規則是什麼()? – JorgeeFG 2013-04-23 18:46:37