2010-09-30 4 views
0

J'utilise Symfony 1.4 pour créer un projet, et j'ai besoin de créer des formulaires dynamiques en fonction du type d'ensemble de questions provenant de la base de données. J'ai utilisé des formes Symfony dans le reste de mon projet, mais dans ce cas, l'utilisation de formes symfony semble être difficile, car j'ai besoin d'une forme dynamique. peut-il être sûr d'utiliser des formulaires HTML normaux .. dans le projet symfony, ou il est conseillé d'utiliser des formulaires Symfony. donc besoin de votre aide.Formulaires Symfony ou formulaires HTML normaux

+0

Pouvez-vous donner plus d'informations sur ce que vous essayez de faire? Des formes «dynamiques» - comment sont-elles dynamiques? Quoi que vous essayiez de faire, Symfony peut presque certainement le faire. –

+0

@jeremy, désolé je coudnt expliquer beaucoup .. la forme dynamique que je voulais dire était..le formulaire sera créé au moment de l'exécution en fonction de la base de données .. comme il aura n nombre de choix ... et le type d'éléments (à savoir les éléments HTML) va changer en fonction du type de question (si un seul choix puis sélectionnez élément, si multiple puis case à cocher ..) j'espère qu'il était clair .. –

+0

auparavant j'utilisais PHP classique, de faire la même chose .. à ce moment J'ai créé ces formulaires de jeu de questions par code PHP ... et javascript utilisé aussi .. –

Répondre

2

Vous pouvez utiliser des formulaires html, mais cela contournerait le système de validation de formulaire de symfony.

Vous pouvez toujours créer des formulaires dynamiques en créant et en ajoutant des widgets d'entrée au formulaire en cours ou un nouveau formulaire dans une action. Vous pouvez ensuite répercuter le formulaire dans le modèle et les champs générés dynamiquement feront également partie du formulaire.

Si vous commencez avec un MyForm.class.php dans le répertoire lib/formulaires, assurez-vous d'ajouter:

$this->validatorSchema->setOption('allow_extra_fields', true); 

Sinon, vous obtiendrez automatiquement les erreurs de validation. Si vous voulez ajouter des champs à un formulaire dans une action que vous voulez faire quelque chose comme ceci:

$this->form = new MyForm(); 
$widgetSchema = $this->form->getWidgetSchema(); 
$widgetSchema['add_field'] = new sfWidgetFormInputText(); 

Lorsque vous l'écho de votre forme l'entrée « add_field » sera ajouté.

+0

Je vais essayer, parce que je veux ajouter des éléments HTML à l'exécution et sans perdre le système de validation de formulaire Symfony .. –

1

Il serait utile d'avoir plus d'informations sur ce que vous faites, mais voici une façon dont les formes peuvent être dynamiques dans Symfony. Ce code crée des widgets et validateurs pour une enquête dynamiquement en fonction du « type » d'une question:

class SurveyAnswerForm extends BaseSurveyAnswerForm 
{ 
    public function configure() 
    { 
    $question = $this->object->Question; 

    $method = sprintf('createWidgetAndValidatorFor%sInputType', $question->type); 
    $this->$method($question); 
    $this->getWidget('value')->setOption('label', $question->question); 
    $this->getValidator('value')->setOption('required', $question->required); 
    } 

    protected function createWidgetAndValidatorForTextFieldInputType(Question $question) 
    { 
    $this->setWidget('value', new sfWidgetFormInputText()); 
    $this->setValidator('value', new sfValidatorString()); 
    } 

    protected function createWidgetAndValidatorForTextAreaInputType(Question $question) 
    { 
    $this->setWidget('value', new wfWidgetFormTextareaAutosize()); 
    $this->setValidator('value', new sfValidatorString()); 
    } 

    //etc. for as many types as you require 
} 

Note: alors que cette réponse est le code d'un de mes projets, il a été fortement influencée par this answer sur le SymfonyExperts.

Questions connexes