我有3个实体:文章,作者,Reivews:
关系:
作者创建文章和评论。他们是应用的用户。
我试图在文章的SHOW视图中嵌入作者,文章和评论实体的混合体。但只有用户(作者)提供的输入。
用例示例:用户(作者)位于文章的SHOW视图中。系统会提示他留下评论,表单中包含以下字段:
请注意,我们不应该显示要求查看文章的任何字段!我们应该能够在某个时刻抓住幕后的内容,并在代码中填充新评论的article_id。
我已经在这方面工作了一段时间,我认为它必须对表格和活动做些什么?我在这里(不远处......)
在这次尝试中,我正在考虑让田地自动填充,然后使用隐藏的田地......我很难做到这一点。我不想让人们有机会操纵article_id
class ReviewType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('review')->add('title');
//$builder->add('article', HiddenType::class);
$builder->add('author', AuthorType::class, array("label" => FALSE));
$builder->add('rating', ChoiceType::class, array(
'choices' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' =>'5'),
'expanded' => true,
'multiple' => false
));
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (\Symfony\Component\Form\FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
$article = $data->getArticle();
$articleId = null === $article ? array() : $article->getId();
$form->add('article', ArticleType::class, array("label" => FALSE));
}
);
}
提前感谢您提供的任何输入!!!
答案 0 :(得分:0)
您应该将表单的操作(在article/{id}/show
中)生成并显示为article/{id}/review
,然后在管理表单提交和持久性的相应操作中获取文章ID。
我认为这不是形式事件的问题。