Yii Framework Forum: Как В Yiiactiveform Отключить Редирект После Валидации? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Как В Yiiactiveform Отключить Редирект После Валидации? Rate Topic: -----

#1 User is offline   Pasta 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-February 13

Posted 15 February 2013 - 02:25 PM

У меня есть форма с аякс валидацией. После отправки формы и удачного прохождения валидации происходит редирект и я не знаю как его отключить.

Подскажите, в чем дело пожалуйста.

Понял только то, что дело не в том, что приходит от сервера, потому что когда приходит пустая строка, редирект происходит.
<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 -->

0

#2 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 16 February 2013 - 05:37 AM

Куда редиректит?
Покажите actionUpdate из котноллера
0

#3 User is offline   Pasta 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-February 13

Posted 16 February 2013 - 10:18 AM

В моем случае за форму отвечает 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()
    {

    }

0

#4 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 16 February 2013 - 10:24 AM

Куда вас редиректит после валидации?

сюда? 'application.views.menu.view',
Может в самом поведении есть редирект?
0

#5 User is offline   Pasta 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-February 13

Posted 18 February 2013 - 05:14 AM

редиректит на menu/update
0

#6 User is offline   Pasta 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-February 13

Posted 18 February 2013 - 05:44 AM

Разобрался.
Для yiiactiveform это нормальное поведение.
В случае, если аякс валидация не вернула никаких ошибок, то yiiactiveform просто передает управление форме и происходит обычная отправка данных. На все формы, которые должны вести себя по другому надо вешать что то типа этого:
    $('#menu-form').live('submit',function(){
        return false;
    });

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users