2014-05-12 2 views
0

Je travaille sur un formulaire avec un Fieldset et je n'arrive pas à faire fonctionner correctement le formulaire avec l'hydrateur.ZF2 - fieldset de formulaire

Ce que je:

Formulaire base.php espace de noms Cms \ forme \ Cms;

use Zend\ServiceManager\FactoryInterface; 
use Zend\InputFilter\InputFilterProviderInterface; 
use Zend\Authentication\AuthenticationService; 
use Zend\Form\Form; 
use Zend\Form\Fieldset; 

use Zend\Stdlib\Hydrator\ObjectProperty as ObjectPropertyHydrator; 


public function __construct() { 

$this->setAttribute('method', 'post') 
    ->setHydrator(new ObjectPropertyHydrator(false)); 

$this->add(array(
    'name' => 'id', 
    'type' => 'Hidden', 
)); 
$this->add(array(
     'name' => 'title', 
     'type' => 'Text', 
     'required' => true, 
     'options' => array(
      'label' => _('Menu titel'), 
    ), 
)); 
$meta = new \Cms\Form\Cms\Meta('meta'); 
$meta->setUseAsBaseFieldset(false); 
$this->add($meta); 

Meta.php

public function __construct($name = null) 
{ 
    parent::__construct('meta'); 
    $this->setHydrator(new ObjectPropertyHydrator(false)) 
      ->setObject(new \Cms\Entity\MetaEntity()); 

    $this->setLabel('Meta'); 

    $this->add(array(
      'name' => 'seo_meta_title', 
      'type' => 'Text', 
      'options' => array(
      'label' => _('Title'), 
     ), 
    )); 

     } 

Controller ....

$cms = $this->getCmsable()->byId($id); 

$form = new Base('add'); 
$form->bind($cms); 

La forme a bien fonctionné jusqu'à ce que j'ajouté le fieldset supplémentaire. Si j'utilise l'option setUseAsBaseFieldset, le champ true-> fieldset est uniquement défini false-> seul le formulaire principal est défini.

J'ai vérifié toutes les données et il est présent. Je pense que cela a quelque chose à voir avec l'hydrateur. Quelqu'un peut-il me donner quelques conseils ici?

Répondre

-1

Je n'ai pas pu obtenir votre problème exactement, qu'entendez-vous par la dernière partie "Si j'utilise l'option setUseAsBaseFieldset, le champ true-> fieldset n'est défini que false-> seul le formulaire principal est défini." Mais here est un exemple de travail de la même implémentation, c'est-à-dire fieldset et ObjectPropertyHydrator. espérons que cela aide

+0

Les liens vers des ressources externes sont encouragés, mais s'il vous plaît ajouter un contexte autour du lien afin que vos autres utilisateurs auront une idée de ce que c'est et pourquoi il est là. Toujours citer la partie la plus pertinente d'un lien important, dans le cas où le site cible est inaccessible ou va définitivement hors ligne. –

+0

@AndrewStubbs quelle partie de "l'exemple de travail de la même implémentation, c'est-à-dire fieldset et ObjectPropertyHydrator" vous ne pouviez pas obtenir ?? J'ai écrit la déclaration parce que c'est ce que le lien est sur. De quel contexte avez-vous besoin? ** Je ne m'inquiète pas beaucoup de ce que vous avez voté, mais c'était ... –

+0

** Toujours citer la partie la plus pertinente d'un lien important, au cas où le site cible est inaccessible ou se déconnecte définitivement **. Votre message sera complètement inutile si la ressource distante change –

Questions connexes