Для достижения желаемого результата (используя форму через несколько вкладок, то лучше построить форму по-разному, в зависимости от количества вкладки в Например, ваша форма метод конструктора будет выглядеть следующим образом:.
<?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>
Мне нужно создать вкладки в окне просмотра в любом случае, не так ли? – user3240723
Я не разбираюсь в ZF, я не уверен, что получил то, что вы сказали. У меня есть несколько FIELDSETS в разных файлах в моей форме. Я также использую DOCTRINE. Если я не ошибаюсь, использование FIELDSET похоже на несколько форм, и я могу ЗВОНИТ его для любой формы, верно? Вы мне объясните? – user3240723
Я только что показал, как вы можете создать класс модели формы, который можно использовать на нескольких вкладках. Конечно, вам нужно создать шаблон отображения .phtml и добавить HTML-код для своих вкладок. Если у вас есть проблемы с этим, я рекомендую вам книгу [Использование Zend Framework 2] (http://using-zend-framework-2-book.com/), которая хорошо подходит для новичков. – OlegKrivtsov