2017-08-03 1 views
0

ma première question à ce site est un peu difficile à décrire. Je suis assez nouveau à Symfony, startet avec 3.2 et mis à jour récemment à 3.3.5 (pas sûr si pertinent pour le problème). J'ai essayé d'utiliser CraueFormFlowBundle (bundle de formulaires en plusieurs étapes), mais je n'arrive pas à le faire fonctionner. Le problème est que d'essayer d'accéder aux résultats de flux à une exception:Symfony 3.3 CraueFormFlowBundle Request_stack est vide

Error: Call to a member function getCurrentRequest() on null 

Symfony\Component\Debug\Exception\ FatalErrorException 
in vendor/craue/formflow-bundle/Form/FormFlow.php (line 191) 

Ligne 191 spectacles: $ currentRequest = $ this-> requestStack-> getCurrentRequest();

La modification de FormFlow.php avec une ligne de vidage indique que $ this-> requestStack est null. Je n'ai pas assez de connaissances sur ce paquet pour savoir où commencer à chercher le problème.

La définition de flux est basée sur l'exemple de l'emplacement:

namespace EngineeringBundle\Form; 

use Craue\FormFlowBundle\Form\FormFlow; 
use Craue\FormFlowBundle\Form\FormFlowInterface; 

class SelectExaminationFlow extends FormFlow 
{ 

    /** 
    * {@inheritDoc} 
    */ 
    protected function loadStepsConfig() 
    { 
     dump("loadStepsConfig"); 
     return array(
      array(
       'label' => 'engineering.discipline', 
       'form_type' => new SelectExaminationStep1Form(), 
      ), 
      array(
       'label' => 'engineering.date', 
       'form_type' => new SelectExaminationStep2Form(), 
         'skip' => function($estimatedCurrentStepNumber, FormFlowInterface $flow) { 
          return $estimatedCurrentStepNumber > 1 && !$flow->getFormData()->canHaveRegion(); 
         }, 
      ), 
      array(
       'label' => 'confirmation', 
      ), 
     ); 
    } 

La définition de formulaire est également tout à fait simple et fonctionne sans problème:

class SelectExaminationStep1Form extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    dump("buildForm"); 
     $builder 
     ->add('id', HiddenType::class) 
     ->add('discipline', EntityType::class, array(
       'class' => 'EngineeringBundle:Discipline', 
       'choice_label' => 'disciplineName', 
       'label' => 'engineering.discipline.label' 
      ) 
      ); 
    } 

    public function getName() { 
     return $this->getBlockPrefix(); 
    } 

    public function getBlockPrefix() { 
     return 'createEngineeringStep1'; 
    } 

} 

services.yml:

EngineeringBundle\Form\SelectExaminationFlow: 
    parent: craue.form.flow 
    autowire: false 
    autoconfigure: false 
    public: true 

engineering.form_flow: 
    alias: EngineeringBundle\Form\SelectExaminationFlow 
    public: true 

Contrôleur:

/** 
* @Route("create", name="engineering_create") 
*/ 
public function createAction() 
{ 
    return $this->processFlow(new ExaminationDate(), $this->get('engineering.form_flow')); 

} 

Merci à l'avance

Sebastian

+0

Impossible d'ajouter des messages d'accueil à la publication, ne semble pas être enregistré. Désolé pour ça ... –

Répondre

0

je le même problème, résolu en ajoutant un constructeur à vendor/craue/formflow-bundle/Form/FormFlow.php avec le contenu suivant:

public function __construct(RequestStack $requestStack, FormFactoryInterface $formFactory, DataManagerInterface $dataManager, EventDispatcherInterface $eventDispatcher) { 
    $this->formFactory = $formFactory; 
    $this->requestStack = $requestStack; 
    $this->dataManager = $dataManager; 
    $this->eventDispatcher = $eventDispatcher; 
} 

Assurez-vous de le placer après toutes les méthodes de setter. Le problème semble être lié à une mise à jour de symfony.

+0

Salut Stuffy, j'ai modifié mes exigences et donc le problème est maintenant obsolète mais merci quand même. J'accepterai la réponse pour tous les autres avec le même problème. –