Как отправить суб-форму Zend Dojo - PullRequest
0 голосов
/ 08 сентября 2011

Я потратил часы в сети, чтобы найти решение, но ничего не работает.

У меня есть форма, разделенная на 2 подформы (я не могу заставить работать панель аккордеона)

как это:

$sfBase = new Zend_Dojo_Form_SubForm('base_info');
$sfBase->setName('base_info')
            ->setAction('/product/add?f=1');

$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int')
      ->setAttrib('style', 'display:none');

$nom = new Zend_Dojo_Form_Element_TextBox('name');
$nom->setLabel('Nom du produit')
     ->setTrim(true)
     ->setValue("Entrez le nom")
     ->setPropercase(true);

$sdesc = new Zend_Dojo_Form_Element_TextBox('sdesc');
$sdesc->setLabel('Courte description du produit')
      ->setTrim(true)
      ->setValue("Description")
      ->setPropercase(true);

$sfBase->addElements(array($id, $nom, $sdesc);

$submitSubBase = new Zend_Dojo_Form_Element_SubmitButton('sub1');
$submitSubBase->setLabel('ok');
$sfBase->addElement($submitSubBase);

и другая подчиненная форма, которая содержит несколько других элементов:

$sfComp = new Zend_Dojo_Form_SubForm('comp_info');
$sfComp->setName('comp_info')
       ->setAction('/product/add?f=2');
...
$submitSubComp = new Zend_Dojo_Form_Element_SubmitButton('sub2');
$submitSubComp->setLabel('envoyer');
$sfComp->addElement($submitSubComp);

$this->addSubForms(array('base_info' => $sfBase,
            'comp_info' => $sfComp
            ));

В моем контроллере я отображаю всю инстанцированную форму:

$this->view->base = $form;

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

с setAction:

$baseForm->setAction($this->view->url(
            array('controller' => 'Product', 'action' => 'add', 'id' => '1'), 'default', 
            true));

но это то же самое, в конце концов я разделил форму на два разных Zend_Form вместо подчиненных, но это не очень чисто ...

Поэтому, безуспешно попробовав многостраничные формы, подформы и контейнеры Dojo, я не знаю, что делать, и любая помощь будет приветствоваться!

спасибо

1 Ответ

1 голос
/ 10 сентября 2011

Не знаю, поможет ли это вообще, но вот мой ответ.

Если в ОСНОВНОЙ форме не включена поддержка Dojo, вызывали ли вы Zend_Dojo :: enableForm () в методе init? Является ли ГЛАВНАЯ форма расширяющейся формой Zend_Dojo_Form? Если он выходит из Zend_Dojo_Form, вам не нужно вызывать Zend_Dojo :: enableForm ().

Формы Dojo отправляются с использованием JavaScript. У вас должен быть некоторый JavaScript на стороне клиента, который может обрабатывать ответы от сервера, который будет возвращаться. Если у вас нет javascript на стороне клиента для обработки этих возвратов, вы не увидите результаты отправки.

Попробуйте это, напишите некоторый javascript, используя инструментарий dojo, который создаст окно предупреждения, когда он получит что-то от сервера. Таким образом, если вы нажмете кнопку отправки и появится окно с предупреждением, вы будете знать, что форма была отправлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...