Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Bon voila je viens juste de commencer à utiliser Zend Framework 2 il ya quelques heure. Je suit le tutoriel officiel de leur site. Tout se passsait bien jusqu'a que j'arrive à la création de formulaire. J'ai bien suivit toutes les étapes de la création et pourtant j'ai une erreur au niveau de ma vue :
Catchable fatal error: Object of class Zend\Form\View\Helper\FormHidden could not be converted to string in /var/www/zend/module/Album/view/album/album/add.phtml on line 12
Je ne comprend pas pourquoi j'ai cette erreur. En cherchant un peu de mon coté, je n'ai rien trouvé du tout. Si quelqu'un à une idée, je suis preneur.
Merci d'avance
Hors ligne
Avec un peu de code ce serait mieux ;-). Vraisemblablement tu sembles appeler l'aide de vue "formHidden" dans ta vue, en lui passant en paramètre un objet qui n'est pas un élément de type Hidden. Mais sans code je ne peux pas t'aider davantage ;-).
Hors ligne
Bonjour et merci pour ta réponse. Donc voici le code utilisé dans mon controller :
public function addAction(){ $form = new AlbumForm(); $request = $this->getRequest(); if ($request->isPost()) { $album = new Album(); $form->setInputFilter($album->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $album->exchangeArray($form->getData()); $this->getAlbumTable()->saveAlbum($album); // Redirect to list of albums return $this->redirect()->toRoute('album'); } } return array('form' => $form); }
et celui utilisé dans la vue associé :
<?php $title = 'Add new album'; $this->headTitle($title); ?> <h1><?php echo $this->escapeHtml($title); ?></h1> <?php $form = $this->form; $form->setAttribute('action', $this->url('album', array('action' => 'add'))); $form->prepare(); echo $this->form()->openTag($form); echo $this->formHidden($form->get('id')); echo $this->formRow($form->get('title')); echo $this->formRow($form->get('artist')); echo $this->formSubmit($form->get('submit')); echo $this->form()->closeTag(); ?>
C'est pourtant exactement le même code que dans le tutoriel officielle, mais pourtant j'ai cette erreur. Merci de ton aide en tout cas
Hors ligne
Bonjour,
Et si tu enlevais le echo devant $this->formHidden($form->get('id')); ? Qu'est ce que ca donne ?
Comme mentionne dans le tutoriel http://framework.zend.com/manual/2.0/en … tions.html
as-tu essayé l'alternative echo $this->formCollection($form); ?
Dernière modification par us2rn4m2 (24-12-2012 18:39:19)
Hors ligne
Salut et merci pour ta réponse,
J'ai malheureusement déjà essayer de retiré le echo ou bien d'utilisé l'alternative avec formCollection, mais dans les 2 cas, ça ne m'affiche rien.
Hors ligne
Ok, le tuto je l'ai essayé, il marche et j'ai reussi a reproduire ton erreur.
dans module/Album/src/Album/Form as - tu le fichier AlbumForm.php et si oui regarde si il ne te manque pas quelques instructions.
A commencer par celle ci:
$this->add(array(
'name' => 'id',
'attributes' => array(
'type' => 'hidden',
),
));
[lang=php] <?php // module/Album/src/Album/Form/AlbumForm.php: namespace Album\Form; use Zend\Form\Form; class AlbumForm extends Form { public function __construct($name = null) { // we want to ignore the name passed parent::__construct('album'); $this->setAttribute('method', 'post'); $this->add(array( 'name' => 'id', 'attributes' => array( 'type' => 'hidden', ), )); $this->add(array( 'name' => 'artist', 'attributes' => array( 'type' => 'text', ), 'options' => array( 'label' => 'Artist', ), )); $this->add(array( 'name' => 'title', 'attributes' => array( 'type' => 'text', ), 'options' => array( 'label' => 'Title', ), )); $this->add(array( 'name' => 'submit', 'attributes' => array( 'type' => 'submit', 'value' => 'Go', 'id' => 'submitbutton', ), )); } }
Hors ligne
Salut,
Je viens de trouver d'ou venez mon erreur. En fait lorsque j'ai déclarer mon constructeur dans AlbumForm, dans ma tête j'été entrain de pensé "constructor" mais je l'ai aussi écris comme ça, alors qu'il fallait bien entendu que ce soit "construct" LOL, une erreur bête qui me servira de leçon
Merci pour ton aide
Hors ligne