Ajax-валидация внутри частично визуализированного div - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь обработать проверку ajax в <div class="b">, которая частично отрисовывается с использованием ajax ...

enter image description here

$('.a').click(function(event){
        $.ajax({
            url: '<?php echo Yii::app()->createUrl('myController/myAction'); ?>',
            type: "POST",
            success: function( data ) {
                $('.b').html(data);
          }
        });
    });

в контроллере:

public function actionMyAction()
{
    $form = new MyForm;

    if(isset($_POST['MyForm']))
    {
        $form->attributes=$_POST['MyForm'];
        if($form->validate())
        {
            ...
            $this->refresh();
        }
    }

    $this->renderPartial('myView', array('myForm'=>$form));
}

Если я использую render вместо renderPartial, он работает как задумано. Чего мне не хватает?

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 05 марта 2012

Мой друг помог мне решить эту проблему. Вот его решение:

Результат рендеринга должен быть обработан с использованием processOutput. Этот метод "выполняет постобработку вывода, сгенерированного render (). Этот метод вызывается в конце render () и renderText (). Если есть зарегистрированные клиентские скрипты, этот метод вставит их в выходные данные в соответствующих местах. Если есть динамическое содержимое, они также будут вставлены. Этот метод может также сохранять постоянные состояния страницы в скрытых полях форм с сохранением состояния на странице ".

Возможность обработки результата рендеринга определяется параметром $processOutput, который по умолчанию равен false: renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)

Вместо

$this->renderPartial('myView', array('myForm'=>$form));

Вам следует позвонить:

$this->renderPartial('myView', array('myForm'=>$form), false, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...