2015-04-11 2 views
0

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

Это фрагмент кода index.phtml:

foreach($this->aktermine as $termin) : 
?> 


<tr> 
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->nr);?></td> 
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->kopfnr);?></td> 
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->datum);?></td> 
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->zeit);?></td> 
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->thema);?></td> 
<td></td> 
</tr> 

<?php 

$i=$i+1; 
endforeach; 

?> 
<tr> 
<td class="row_<?PHP echo $i % 2;?>"><input name="nr1" type="text" size="2" maxlength="2"></td> 
<td class="row_<?PHP echo $i % 2;?>"><input name="kopfnr1" type="text" size="2" maxlength="2"></td> 
<td class="row_<?PHP echo $i % 2;?>"><input name="datum1" type="text" size="10" maxlength="10" ></td> 
<td class="row_<?PHP echo $i % 2;?>"><input name="zeit1" type="text" size="10" maxlength="10"></td> 
<td class="row_<?PHP echo $i % 2;?>"><input name="thema1" type="text" size="30" maxlength="30"></td> 

</tr> 
<a href="<?php echo $this->url(array('controller'=>'aktermine','action'=>'add', 'kopfnr'=>$termin->kopfnr));?>">Speichern</a> 

В моем контроллере добавления действия я хочу использовать значение из последняя строка (с именем * 1). Я, конечно, получить Kopf Н.Р. с:

$knr = $this->_getParam('kopfnr', 0); 

Но как я могу отправить и получить другие ценности?

Вот ист мой класс формы я использовал раньше:

class Application_Form_Aktermine extends Zend_Form 
{ 

public function init() 
    { 
     $this->setName('Arbeitskalender Termine'); 

     $nr = new Zend_Form_Element_Text('nr'); 
      $nr->addFilter('Int'); 
     $kopfnr = new Zend_Form_Element_Text('kopfnr'); 
      $kopfnr->addFilter('Int'); 
     $datum = new Zend_Form_Element_Text('datum'); 
      $datum->setLabel('datum') 
      ->addValidator(New Zend_Validate_Date('MM-DD-YYYY')) 
      ->setAttrib('size', '20'); 
     $zeit = new Zend_Form_Element_Text('zeit'); 
      $zeit->setLabel('zeit') 
      ->addValidator(new Zend_Validate_Date(array('format' => 'H:i:s'))) 
      ->setAttrib('size', '20'); 

     $thema = new Zend_Form_Element_Text('thema'); 
      $thema->setLabel('thema') 
      ->setRequired(true) 
      ->addFilter('StripTags') 
      ->addFilter('StringTrim') 
      ->addValidator('NotEmpty'); 

     $submit = new Zend_Form_Element_Submit('submit'); 
     $submit->setAttrib('loge', 'submitbutton'); 
     $this->addElements(array($nr, $kopfnr,$datum, $zeit, $thema, $submit)); 

    } 
} 

Как я могу изменить его представления таблицы?

+0

Почему вы используете входы html? Вместо этого вы должны отобразить свою «форму» для добавления действия. – blackbishop

+0

Как создать табличное представление? –

+0

Я добавил свой класс формы –

ответ

1

Пожалуйста, не используйте входы HTML. Вы должны использовать ваш Application_Form_Aktermine на ваш взгляд. Если вы хотите сделать свою форму в виде таблицы можно использовать From Decorators

Вы могли бы, например, иметь таблицу с двумя столбцами, первый для label и второй для Zend_Form_Element.

В init() функции вашего Application_Form_Aktermine Класса, сделать что-то вроде:

public function init() 
{ 
    // decorators here for form elements 
    $elementDecoration = array(
     'ViewHelper', 
     'Description', 
     'Errors', 
     array(array('data'=>'HtmlTag'), array('tag' => 'td', 'valign' => 'TOP')), 
     array('Label', array('tag' => 'td')), 
     array('Errors'), 
     array(array('row'=>'HtmlTag'),array('tag'=>'tr')) 
    ); 
    // decorators here for button 
    $buttonDecoration = array(
     'ViewHelper', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'prepend')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')), 
    ); 
    //form decoration 
    $formDecoration = array(
     'FormElements', 
     array(array('data'=>'HtmlTag'), array('tag'=>'table', 'class'=>'forms')), 
     'Form' 
    ); 

    // the rest of your code 
    // just add ->setDecorators() for every element 

    $this->setName('Arbeitskalender Termine'); 

    $nr = new Zend_Form_Element_Text('nr'); 
    $nr->addFilter('Int') 
     ->setDecorators($elementDecoration); 

    $kopfnr = new Zend_Form_Element_Text('kopfnr'); 
    $kopfnr->addFilter('Int') 
      ->setDecorators($elementDecoration); 
    $datum = new Zend_Form_Element_Text('datum'); 
    $datum->setLabel('datum') 
      ->addValidator(New Zend_Validate_Date('MM-DD-YYYY')) 
      ->setAttrib('size', '20') 
      ->setDecorators($elementDecoration); 
    $zeit = new Zend_Form_Element_Text('zeit'); 
    $zeit->setLabel('zeit') 
     ->addValidator(new Zend_Validate_Date(array('format' => 'H:i:s'))) 
     ->setAttrib('size', '20') 
     ->setDecorators($elementDecoration); 

    $thema = new Zend_Form_Element_Text('thema'); 
    $thema->setLabel('thema') 
      ->setRequired(true) 
      ->addFilter('StripTags') 
      ->addFilter('StringTrim') 
      ->addValidator('NotEmpty') 
      ->setDecorators($elementDecoration); 

    $submit = new Zend_Form_Element_Submit('submit'); 
    $submit->setAttrib('loge', 'submitbutton') 
      ->setDecorators($buttonDecoration); 

    // add for decorator to your form 
    $this->setDecorators($formDecoration); 

    $this->addElements(array($nr, $kopfnr,$datum, $zeit, $thema, $submit)); 

} 

Вот post с более подробной информацией о том, как использовать Zend_Form_Decorators для создания TableView для вашей формы.

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

+0

Ссылка - это то, что мне нужно, очень хорошо! –

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