2011-05-11 3 views
0

Je n'arrive pas à obtenir le texte entré d'une zone de texte. Quand je le fais:Comment obtenir la valeur d'une zone de texte dans Symfony

die($request->getPostParameter('comment')) 

Il sort le mot "tableau". Quand je print_r() il montre que le textarea est un tableau et sa valeur est stockée dans le tableau. Mais je ne sais pas comment obtenir cette valeur pour pouvoir la mettre dans un champ dans une table.

@ greg0ire: Je le fais parce que j'essaie d'enregistrer des données dans deux tables différentes. Ma page html affiche un formulaire composé de deux formulaires provenant de deux classes/modèles différents. J'ai réussi à enregistrer tous les champs sur les deux tables à l'exception du champ de commentaire. J'ai alors essayé d'obtenir la valeur et réalisant que c'était un tableau, je me demandais si c'était ce qui faisait que mes données ne soient pas sauvegardées. C'est pourquoi je pose cette question. J'ai demandé un autre question qui explique le contexte.

Ce sont les fonctions qui fonctionnent sur en cliquant sur le bouton Envoyer

public function executeUpdateInlineForm(sfWebRequest $request) 
{ 

    $overdueInvestigation = Doctrine_Core::getTable('investigation')->find($request->getParameter('id')); 

    $investigationForm = new investigationInlineForm($overdueInvestigation); 
    $commentForm=new commentForm(); 


    $investigationForm->bind($request->getParameter($investigationForm->getName()), $request->getFiles($investigationForm->getName())); 
    $commentForm->bind($request->getParameter($commentForm->getName()), $request->getFiles($commentForm->getName())); 

    $this->processInlineForm($investigationForm, $commentForm); 

    } 

protected function processInlineForm(sfForm $investigationForm, sfForm $commentForm) 
{ 

    if ($investigationForm->isValid()) 
     { 
     $investigation = $investigationForm->save(); 

     $comment = $commentForm->updateObject(); 
     $comment->setInvestigation_id($investigationForm->getObject()->getId()); 
     $comment->setComment($commentForm->getObject()->getComment()); 
     $comment->setuserId($investigationForm->getObject()->getCreatedUserId()); 
     $comment->setDateEntered(time()); 
     $comment->save(); 
     $this->redirect('investigation/overdue/'); 
    } 


} 
+0

Pourquoi marquer ma question? Cela peut sembler facile à quelqu'un qui connaît symfony et php, mais pas moi! – Nicola

+0

+1 pour équilibrer downvote injustifiée – greg0ire

+0

duplication possible de [Comment mettre à jour 2 tables d'un formulaire dans Symfony?] (Http://stackoverflow.com/questions/5961527/how-to-update-2-tables-from-one -form-in-symfony) – greg0ire

Répondre

2

vous pouvez simplement stocker $request->getPostParameter('comment') dans un tableau et utiliser array_pop() sur ce tableau, mais je pense qu'il serait préférable de comprendre pourquoi vous êtes obtenir un tableau. Je pense que le nom de la zone de texte doit être comment[], alors que ce devrait probablement être comment.

MISE À JOUR

Après avoir lu votre mise à jour et votre autre question, il semble que vous avez besoin d'avoir cette convention de nommage pour vos champs:

<input type="text" name="investigation[field1]"/> 
<input type="text" name="investigation[field2]"/> 
<input type="text" name="investigation[field3]"/> 
<input type="text" name="comment[content]"/> 

Utilisez la méthode setNameFormat() sur le schéma widget de vos formulaires Pour ce faire, associez votre formulaire d'enquête au paramètre de demande investigation et votre formulaire de commentaire au paramètre comment et tout ira bien.

Bonne chance!

+0

@greg Je vous remercie pour votre contribution, j'ai mis à jour ma question ci-dessus pour la rendre plus claire plutôt que d'ajouter un commentaire avec du code dedans. – Nicola

+0

Merci. J'ai réussi à changer le nomFormat du champ de commentaire, son nom est simplement 'comment'. Je peux maintenant obtenir la valeur bien. Mon problème est maintenant que quand j'essaye de lier la demande à $ comment j'obtiens cette erreur: Avertissement: array_key_exists() [function.array-key-exists]: Le premier argument devrait être une chaîne ou un entier dans C: \ xampp \ htdocs \ tracking \ lib \ fournisseur \ symfony \ lib \ util \ sfParameterHolder.class.php à la ligne 53 – Nicola

+0

Il semble que $ request-> getParameter ($ commentForm-> getName() ne renvoie rien, donc ma liaison La fonction n'obtient pas l'un des deux paramètres (elle n'obtient probablement pas la seconde non plus) – Nicola

Questions connexes