2013-08-13 20 views
0

У меня есть foreach, которые показывают множество форм с тем же действием, заканчивающимся на id diferente. Но, тег <form> просто появляется в первом виде. Все остальные, появляются поля, но не <form> Я попытался поместить id для формы, различной в цикле. Но не работает.Несколько форм внутри foreach

Код:

<?php echo $this->Form->create(null, array(
       'url' => array('controller' => 'menus', 'action' => 'aprovar', $procuracao['Attorney']['id']), 'id' => $procuracao['Attorney']['id'] 
       )); ?> 
       <div class="control-group"> 
       <label class="control-label">Alçada:</label> 
       <div class="controls"> 
       <?php echo $this->Form->input ('alcada', array('type' => 'select', 'label' => FALSE, 'options' => array(
                       'Até 10.000' => 'Até 10.000', 
                       'Até 50.000' => 'Até 50.000', 
                       'Acima de 100.000' => 'Acima de 100.000', 
                       'Acima de 500.000' => 'Até 500.000',), 

                       'empty' => 'Selecione')); ?> 
       </div> 
       </div> 

       <div class="control-group"> 
       <label class="control-label">Validade:</label> 
       <div class="controls"> 
       <?php echo $this->Form->input('validade', array('label' => FALSE, 'type' => 'text')); ?> 
       </div> 
       </div> 
       <?php echo $this->Form->submit('Ok', array('class' =>'btn btn-success pull-left', 'div' => false)); ?> 
       </div> 

Поле "Alçada" и "Validade" отображается правильно. Но тег <form> просто появляется в первом элементе.

ответ

0

Вы не заканчиваете форму.

echo $this->Form->create(null, array(
      'id' => 'your-form-'.$i, //that $i is the index of the foreach, for example 
      'url' => array('controller' => 'menus', 'action' => 'aprovar', $procuracao['Attorney']['id']), 'id' => $procuracao['Attorney']['id'] 
      )); 
//all inputs and other stuff 
echo $this->Form->end(array('label'=>'Ok', 'class' =>'btn btn-success pull-left', 'div' => false)); 

все, что внутри foreach вы используете.

Here является ссылкой на эту функцию в документах. Но в принципе, он делает это

Закрывает форму HTML, очищает значения, установленные FormHelper :: Create(), и записывает скрытые поля ввода, где соответствующие

+0

Привет !!! Не работает. Форма на первом элементе его прекрасна !! Но в остальном не отображается '

' –

+0

Вероятно, столкновение имен или идентификаторов. FormHelper даст тот же идентификатор этим формам, поэтому вам нужно будет предотвратить передачу переменной id для этого. Я обновлю ответ, но имейте это в виду: как вы узнаете, какая форма была отправлена, если все будут иметь одну и ту же модель? каждый элемент формы будет установлен в '$ this-> request-> data ['Model']' в контроллере, поэтому foreach будет бесполезным, нет? Кроме того, формы в одном представлении приведут к [проблеме проверки нескольких форм] (http://stackoverflow.com/questions/16669857/multiple-form-with-same-model-name-on-single-page-cakephp/ 17495130 # 17495130) – Nunser

+0

Я попытался изменить идентификатор и имя каждой формы, но не работает также –

Смежные вопросы