Pasta
(Coolmail2011)
February 15, 2013, 7:25pm
1
У меня есть форма с аякс валидацией. После отправки формы и удачного прохождения валидации происходит редирект и я не знаю как его отключить.
Подскажите, в чем дело пожалуйста.
Понял только то, что дело не в том, что приходит от сервера, потому что когда приходит пустая строка, редирект происходит.
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'menu-form',
'enableAjaxValidation'=>true,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
),
'action'=>'update'
)); ?>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->hiddenField($model,'id'); ?>
<div class="row">
<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($model,'name'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'url'); ?>
<?php echo $form->textField($model,'url',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($model,'url'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
tuschkan
(O Turansky)
February 16, 2013, 10:37am
2
Куда редиректит?
Покажите actionUpdate из котноллера
Pasta
(Coolmail2011)
February 16, 2013, 3:18pm
3
В моем случае за форму отвечает JsTreeBehavior::actionReturnForm()
public function actionReturnForm()
{
$this->excludeScripts();
if (isset($_POST['update_id'])) $model = $this->loadModel($_POST['update_id']);
else $model = new $this->modelClassName;
$this->owner->renderPartial($this->form_alias_path, array(
'model' => $model,
'parent_id' => !empty($_POST['parent_id']) ? $_POST['parent_id'] : '',
'modelClassName' => $this->modelClassName
),
false, true);
}
Цепляется к контроллеру через behaviors
class MenuController extends NestedSetsController
{
public function behaviors()
{
return array(
'jsTreeBehavior' => array('class' => 'application.behaviors.JsTreeBehavior',
'modelClassName' => 'Menu',
'form_alias_path' => 'application.views.menu._form',
'view_alias_path' => 'application.views.menu.view',
'label_property' => 'name',
'rel_property' => 'name'
)
);
}
Редирект происходит даже если MenuController::actionUpdate() сделать пустым
public function actionUpdate()
{
}
tuschkan
(O Turansky)
February 16, 2013, 3:24pm
4
Куда вас редиректит после валидации?
сюда? ‘application.views.menu.view’,
Может в самом поведении есть редирект?
Pasta
(Coolmail2011)
February 18, 2013, 10:14am
5
редиректит на menu/update
Pasta
(Coolmail2011)
February 18, 2013, 10:44am
6
Разобрался.
Для yiiactiveform это нормальное поведение.
В случае, если аякс валидация не вернула никаких ошибок, то yiiactiveform просто передает управление форме и происходит обычная отправка данных. На все формы, которые должны вести себя по другому надо вешать что то типа этого:
$('#menu-form').live('submit',function(){
return false;
});