0

小枝テンプレートでレンダリングしたいコレクションがあります。ただし、小枝からこの ContextErrorException を取得し続けており、フォームのフォームビューを取得していないことをほのめかしています。私のコントローラーでは、フォームをそのまま渡しています...

'formExperience' => $formExperience->createView()

以下に formExperience フォームを示します。

<?php
// Form/CareExperienceForm

namespace Caremonk\MainSiteBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Caremonk\MainSiteBundle\Form\CareWorkExperienceForm;

class CareExperienceForm extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('experience','collection',array(
            'type' => new CareWorkExperienceForm(),
            'allow_add' => true,
            'allow_delete' => true));
        $builder->add('AddExperience','button', array(
            'attr' => array(
                'class'=>'experience'
                )
            ));
        $builder->add('SaveInfo','button', array(
            'attr' => array(
                'class' => 'save'
                )
            ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        // Do nothing for the time being
        $resolver->setDefaults(array(
            'data_class' => 'Caremonk\MainSiteBundle\Processors\CareExperienceProcessor'
        ));
    }

    public function getName()
    {
        return 'CareExperience';
    }
}

「エクスペリエンス」オブジェクトの独立したフィールドをレンダリングしようとしています。クラスは次のとおりです。

<?php
// Form/CareExperienceForm

namespace Caremonk\MainSiteBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Caremonk\MainSiteBundle\Entity\WorkExperience;

class CareWorkExperienceForm extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('companyClient','text',
            array('required' => true,'label'  => 'company / client name',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-company textbox',
                'placeholder'=>'compnay name',
                'field'=>'companyClient'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-company')
            ));

        $builder->add('position','text',
            array('required' => true,'label'  => 'position',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-position textbox',
                'placeholder'=>'position held',
                'field'=>'position'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-position')
            ));

        $builder->add('description','textarea',
            array('required' => true,'label'  => 'description',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-description textarea',
                'placeholder'=>'test content',
                'field'=>'description'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-description')
            ));

        $builder->add('startDate','date',
            array('required' => true,'label'  => 'start date',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-start date',
                'field' => 'startDate'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-start')
            ));

        $builder->add('endDate','date',
            array('required' => true,'label'  => 'end date',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-end date',
                'field'=>'endDate'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-end')
            ));

        $builder->add('currentlyWorkingHere','checkbox',
            array('required' => true,'label'  => 'i currently work here',
            'attr'=> array(
                'class'=>'care_giver_db_register-form-experience-current checkbox',
                'p-true'=>'yes',
                'p-false'=>'no',
                'field'=>'currentlyWorkHere'),
            'label_attr'=> array('class'=>'care_giver_db_register-form-experience-title-current')
            ));

        $builder->add('ClearInfo','reset',array(
            'attr' => array('class' => 'care_giver_db_register-form-experience-cancel-collection'
                )
            ));


        $builder->add('DeleteField','button', array(
            'attr' => array('class' => 'care_giver_db_register-form-experience-delete-collection deleteForm'),
            ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        // Do nothing for the time being
        $resolver->setDefaults(array(
            'data_class' => 'Caremonk\MainSiteBundle\Entity\WorkExperience'
        ));
    }

    public function getName()
    {
        return 'CareWorkExperience';
    }
}

私の小枝ビューでは、次のことを行っているため、エラーが発生しています。

{% for experience in workExperience.experience %}
{{ experience.companyClient }}
{% endfor %}

ただし、symfony は、フォーム ビューを取得できない場合にスローされるコンテキスト エラー例外について不平を言います。たとえば、symfony で form->createView() を実行せずに通常のフォームを渡すようなものです。どうすればこれをレンダリングできますか?

4

0 に答える 0