我在與我正在構建的Symfony2應用程序有關的問題。該問題涉及與一個或多個圖片(插圖)相關的文章(新聞)。看起來很簡單。但我在控制器上堆疊,應該堅持新聞,插圖和上傳圖片文件。使用symfony2和文件上傳生成多個(oneToMany)實體代碼
我的新聞形式類型:
namespace Fcbg\NewsBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class NewsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', 'date')
->add('titre', 'text')
->add('contenu', 'textarea')
->add('publication', 'checkbox', array('required' => false))
->add('type', 'entity', array('class' => 'FcbgNewsBundle:Illustration', 'property' => 'value', 'multiple' => true));
}
public function getName()
{
return 'News';
}
}
我的圖片(S)表格類型:
namespace Fcbg\NewsBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class IllustrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('file', 'file');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Fcbg\NewsBundle\Entity\Illustration',
'cascade_validation' => true,
));
}
public function getName()
{
return 'News';
}
}
我的控制器動作:
public function addAction()
{
//link works properly I think
$news = new News();
$illustration = new Illustration();
$illustration->setNews($news);
$news->addIllustration($illustration);
$form = $this->createForm(new NewsType(), $news);
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form->bind($request);
if ($form->isValid()) {
$doctrine = $this->getDoctrine();
$newsManager = $doctrine->getManager();
$newsManager->persist($news);
$newsManager->persist($illustration);
$newsManager->flush();
return $this->redirect(...);
}
}
return $this->render('base.html.twig',
array(
'content' => 'FcbgNewsBundle:Default:formulaireNews.html.twig',
'form' => $form->createView(),
'name' => "add a news"
)
);
}
的錯誤我得到執行:
Entities passed to the choice field must be managed. Maybe persist them in the entity manager?
這裏的問題是我的實體得到一個名爲「getIllustrations()」的方法,它從邏輯上返回插圖的一個arrey。所以我無法理解這個錯誤/問題。我認爲我的「插圖應該是一個文件中的字段,而不是一個選擇字段...
我如何才能走得更遠任何想法?THX很多!
非常感謝,這固定我的問題。所以,我仍然有一點點錯誤。但它可以通過使用答案的代碼來解決 – MPE