小枝テンプレートでレンダリングしたいコレクションがあります。ただし、小枝からこの 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() を実行せずに通常のフォームを渡すようなものです。どうすればこれをレンダリングできますか?