2017-08-10 13 views
0

CraueFormFlowBundle 3エラー私はCraueFormFlowBundleでフォームをインストールして作成するには、このリンクをたどるしよう

CraueFormFlowBundle tutorial

私が作成

/src/AppBundle/Form/InterventoFlow.php 

namespace AppBundle/Form; 
    use Craue\FormFlowBundle\Form\FormFlow; 
    use Craue\FormFlowBundle\Form\FormFlowInterface; 

class InterventoFlow extends FormFlow { 

    protected function loadStepsConfig() { 
     return array(
      array(
       'label' => 'wheels', 
       'form_type' => 'AppBundle\Form\InterventoForm', 
      ), 
      array(
       'label' => 'engine', 
       'form_type' => 'AppBundle\Form\InterventoForm', 
       'skip' => function($estimatedCurrentStepNumber, FormFlowInterface $flow) { 
        return $estimatedCurrentStepNumber > 1 && !$flow->getFormData()->canHaveEngine(); 
       }, 
      ), 
      array(
       'label' => 'confirmation', 
      ), 
     ); 
    } 

} 

後にファイルを作成

/src/AppBundle/Form/InterventoForm.php 


<?php 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
namespace AppBundle/Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\TextType; 

class InterventoForm extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     switch ($options['flow_step']) { 
      case 1: 
       $validValues = array(2, 4); 
       $builder->add('numberOfWheels', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', array(
        'choices' => array_combine($validValues, $validValues), 
        'placeholder' => '', 
       )); 
       break; 
      case 2: 
       // This form type is not defined in the example. 
       $builder->add('engine', 'TextType', array(
        'placeholder' => 'prova', 
       )); 
       break; 
     } 
    } 

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

} 

サービスを作成した後

services: 
    app.form.InterventoFlow: 
     class: AppBundle\Form\InterventoFlow 
     parent: craue.form.flow 

とコントローラ

public function interventoAction(Request $request) 
{ 
    $formData = new Validate(); // Your form data class. Has to be an object, won't work properly with an array. 

$flow = $this->get('AppBundle.form.InterventoFlow'); // must match the flow's service id 
$flow->bind($formData); 

// form of the current step 
$form = $flow->createForm(); 
if ($flow->isValid($form)) { 
    $flow->saveCurrentStepData($form); 

    if ($flow->nextStep()) { 
     // form for the next step 
     $form = $flow->createForm(); 
    } else { 
     // flow finished 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($formData); 
     $em->flush(); 

     $flow->reset(); // remove step data from the session 

     return $this->redirect($this->generateUrl('home')); // redirect when done 
    } 
} 


    return $this->render('interventi/intervento.html.twig', array(
       'form' => $form->createView(), 
    'flow' => $flow, 
    )); 
} 

と私の小枝ファイル

{% extends 'base.html.twig' %} 

{% block body %} 
    <div> 
    Steps: 
    {% include '@CraueFormFlow/FormFlow/stepList.html.twig' %} 
</div> 
{{ form_start(form) }} 
    {{ form_errors(form) }} 

    {% if flow.getCurrentStepNumber() == 1 %} 
     <div> 
      When selecting four wheels you have to choose the engine in the next step.<br /> 
      {{ form_row(form.numberOfWheels) }} 
     </div> 
    {% endif %} 

    {{ form_rest(form) }} 

    {% include '@CraueFormFlow/FormFlow/buttons.html.twig' %} 
{{ form_end(form) }} 
{% endblock %} 

{% stylesheets '@CraueFormFlowBundle/Resources/assets/css/buttons.css' %} 
    <link type="text/css" rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

はいつも私がすることはできません "app.form.intervento"

属性サービスの "autowireを" エラー与えます"親"が設定されているときに "_defaults"から継承されます。 C:\ xampp \ htdocs \ Myprject \ app/config \からインポートされているC:\ xampp \ htdocs \ Myprject \ app/config \ services.ymlに、 config.yml ")。

と私は

親コメント場合:craue.form.flow

あなたは存在しないサービス "app.form.interventoFlow" を要求してきたが。

答えて

0

service.ymlファイルから_defaultsセクションを削除してみてください。

関連する問題