2014-01-31 3 views
0

мне нужна помощь .. У меня есть уникальная форма с кратными fieldsets, и мне нужно отделить некоторые fieldsets в закладках ..ZF2 - Разделение одной формы во многих вкладках

Итак, я попытался в представлении (форма моя переменная со всей формы):

$form = $this->form; 
$customFieldset = $form->get('customFieldset'); 
$form->remove('customFieldset'); 

Он работает, моя форма FIELDSET в $ customFieldset .. но я не могу вынести это! Когда попробовать:

echo $this->form($customFieldset); 
//OR 
echo $this->formInput($customFieldset); 
//OR 
$this->formCollection($customFieldset); 

Ничего из этого не работает ..

я делаю? Как я могу это сделать?

Большое спасибо.

ответ

1

Для достижения желаемого результата (используя форму через несколько вкладок, то лучше построить форму по-разному, в зависимости от количества вкладки в Например, ваша форма метод конструктора будет выглядеть следующим образом:.

<?php 
namespace Application\Form; 

use Zend\Form\Form; 

// A form model 
class YourForm extends Form 
{ 
    // Constructor. 
    public function __construct($tabNum) 
    { 
    // Define form name 
    parent::__construct('contact-form'); 

    // Set POST method for this form 
    $this->setAttribute('method', 'post'); 

    // Create the form fields here ... 
    if($tabNum==1) { 
     // Add fields for the first tab 
    } else if($tabNum==2) { 
     // Add fields for the second tab 
    } 
    } 
} 
.

в приведенном выше примере, вы передаете параметр $tabNum формировать конструктор модели и метод конструктора создает другой набор полей на основе его стоимость

в действии вашего контроллера, вы используете модель формы, как показано ниже:

<?php 
namespace Application\Controller; 

use Application\Form\ContactForm; 
// ... 

class IndexController extends AbstractActionController { 

    // This action displays the form 
    public function someAction() { 

    // Get tab number from POST 
    $tabNum = $this->params()->fromPost('tab_num', 1);  

    // Create the form 
    $form = new YourForm($tabNum); 

    // Check if user has submitted the form 
    if($this->getRequest()->isPost()) { 

     // Fill in the form with POST data 
     $data = $this->params()->fromPost();    
     $form->setData($data); 

     // Validate form 
     if($form->isValid()) { 

     // Get filtered and validated data 
     $data = $form->getData(); 

     // ... Do something with the validated data ... 

     // If all tabs were shown, redirect the user to Thank You page 
     if($tabNum==2) { 
      // Redirect to "Thank You" page 
      return $this->redirect()->toRoute('application/default', 
      array('controller'=>'index', 'action'=>'thankYou')); 
     } 
     }    
    } 

    // Pass form variable to view 
    return new ViewModel(array(
      'form' => $form, 
      'tabNum' => $tabNum 
     )); 
    } 
} 

В шаблоне просмотра, используйте следующий код:

<form action=""> 
    <hidden name="tab_num" value="<?php echo $this->tabNum++; ?>" /> 
    <!-- add other form fields here --> 
</form> 
+0

Мне нужно создать вкладки в окне просмотра в любом случае, не так ли? – user3240723

+0

Я не разбираюсь в ZF, я не уверен, что получил то, что вы сказали. У меня есть несколько FIELDSETS в разных файлах в моей форме. Я также использую DOCTRINE. Если я не ошибаюсь, использование FIELDSET похоже на несколько форм, и я могу ЗВОНИТ его для любой формы, верно? Вы мне объясните? – user3240723

+0

Я только что показал, как вы можете создать класс модели формы, который можно использовать на нескольких вкладках. Конечно, вам нужно создать шаблон отображения .phtml и добавить HTML-код для своих вкладок. Если у вас есть проблемы с этим, я рекомендую вам книгу [Использование Zend Framework 2] (http://using-zend-framework-2-book.com/), которая хорошо подходит для новичков. – OlegKrivtsov

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

  • Нет связанных вопросов^_^