Как: обработка Zend_Form через ajax - PullRequest
2 голосов
/ 07 октября 2011

Я все больше и больше копаюсь в Zend_Framework, но найти хорошие ресурсы не так уж и легко, поскольку многое из старых версий.Так что я надеюсь найти здесь какой-то вклад.

Я ищу правильный путь , чтобы изменить мои Zend_Forms.Иногда я хочу, чтобы форма вызывалась через ajax, а затем, очевидно, обрабатывала ее и через ajax.Вызов формы ajax работает нормально, но я немного борюсь с обработкой.

В настоящее время мое действие выглядит так:

// asset/add
public function addAction() {
  $form = new Application_Form_Asset();
  if($this->getRequest()->isPost()) {
    if($form->isValid($this->_getAllParams())) {
      // Process to database using either Flashmessenger and redirector or view->message for success output
    }
  }
  $this->view->form = $form;
}

Теперь я не совсем понимаю, насколько далекоМне нужно изменить этот код.По сути, я хочу добиться следующего:

  1. Вызов формы через ajax (что я могу сделать, ajaxContext и т. Д., Без проблем)
  2. Обработка формы через ajax тоже(тоже работает jQuery, но результат обработки не тот, который я хочу
  3. Результатом должен быть json из объекта, хранящегося в базе данных

И соединение из пункта 2-3 - именно там, где у меня возникают проблемы с поиском ресурсов в Интернете.

Угадаемое решение : Мне кажется, мне нужно переставить свои контроллеры и обработку форм так, чтобыя не обрабатываю все внутри addAction(), но иметь это и processaddAction(), где задача addActions - отображать форму, а processadd выполняет проверку и вставку в базу данных, но даже с этой моделью я не очень понимаю, какя могу сделать вывод в формате json.

Я просто немного застрял в своих мыслях. Некоторых "Zendwords", которые я должен найти, вероятно, будет достаточно для меня, чтобы узнать, чего я хочу достичь,но если кто-то захочет привести мне рабочий пример, я бы не сказал нет;)

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 07 октября 2011

Я не уверен, что это точно соответствует вашим потребностям, но следующий урок вполне понятен:

http://www.zendcasts.com/ajaxify-your-zend_form-validation-with-jquery/2010/04/

Я использую идеи, содержащиеся там, для проверки полей через Ajax (как вы говорите, используя другой validateAction), как в интерактивном режиме (когда они теряют фокус в браузере), так и перед отправкой.

Надеюсь, это поможет,

1 голос
/ 07 октября 2011

Я сделал это, добавив кнопку (не тип отправки) и событие нажатия jquery на эту кнопку.Проверка была проведена плагином проверки для jquery.

  1. Вызов Ajax будет указывать на контроллер / действие (processaddAction), которое обработает данные.

  2. Затем получить данные и json_encode их (вернуть $ json)

    public function processaddAction () {// выполнить обработку return json_encode ($ data);}

  3. Ваша функция успеха Ajax перехватит json

    $. Ajax ({url: "/ controller / processaddAction", введите: 'POST', data: 'data = '+ [POST DATA], async: false, success: function (theJson) {

    }});

Форма была сгенерирована только Zend-FW.

...