我尝试通过CJuiDialog中的ajax加载表单。表单已成功加载,但是当我提交表单或写入文本时,表单未验证且未提交。我尝试在renderPartial中设置“true”第四个参数,然后对话框窗口未打开。在控制台中,我收到了错误
$(...)。对话框不是函数
在视图中我有这个:
String name = ...;
String code = map.get(name);
if (code != null) {
// do something...
}
我在控制器中的行为:
Yii::app()->clientScript->registerScript(
"test",
"jQuery.ajax({
type: 'POST',
url: '".$this->createUrl("/Site/ShowForm")."',
success: function(html){
$('#form-test').html(html);
});
",
CClientScript::POS_READY); ?>
<div id="form-test"></div>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog');
和我的表格(register.php)
public function actionShowForm()
{
$model = new RegistrationForm;
if(Yii::app()->request->isAjaxRequest )
return $this->renderPartial('register', array('model' => $model),false,false);
}
public function actionRegister()
{
$model = new RegistrationForm;
$this->ajaxValidate($model);
$model->attributes =$_POST['RegistrationForm'];
if($model->validate())
{
$user = new User;
$user->attributes = $model->attributes;
if($user->save())
echo 1;
}
}
我该如何解决这个问题?
答案 0 :(得分:1)
在您的控制器中,您检查请求是否为Ajax,您应该在那里进行Ajax验证。
答案 1 :(得分:1)
我找到了解决方案!我添加了
Yii::app()->clientScript->scriptMap = array(
'jquery.js' => false,
'jquery.ui.js' => false,
'jquery.yiiactiveform.js' => false,
);
在我的actionShowForm中。