在我的项目中,我有两个实体。发表和评论。
Comment
实体有以下字段
我正在发布评论表。现在以评论形式,我得到一个下拉菜单,我可以从中选择一个帖子。我不是那个。我想将post字段设置为默认值,该默认值与上面呈现的帖子相同。它不应该是可变的。
我怎样才能实现这种行为?
更新
我的控制器中有以下代码 $ comment = new Comment();
$comment -> setPost($entity);
$commentForm = $this -> createCommentForm($comment);
return array(
'entity' => $entity,
'delete_form' => $deleteForm->createView(),
'comment_form' => $commentForm->createView()
);
在这段代码中,我正在设置post value,它在表单中作为默认值,但它是可更改的。
我正在使用以下代码创建表单:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('reference')
->add('post','entity', array(
'class' => 'OpenSourceFeedBundle:Post',
'required' => TRUE
))
->add('date', 'date', array(
'html5' => TRUE,
'widget' => 'single_text',
'read_only' => TRUE
))
->add('message')
;
}
答案 0 :(得分:0)
您应该在控制器中设置评论$ post值。你能告诉我你的Post控制器的发布/显示动作吗?
基本上你有帖子的显示动作,在你的控制器中你有可用的帖子对象,所以当你触发后你应该做这样的事情
$comment = new Comment();
$comment->setPost($post);
然后执行您需要执行的操作,例如刷新对数据库的注释。
在树枝中,您不应该使用下拉列表显示该部分。
如果您能够粘贴树枝和控制器,我会向您展示解决方案。
答案 1 :(得分:0)
尝试this
禁用
type:boolean default:false
如果您不希望用户修改字段的值,您可以进行设置 禁用选项为true。任何提交的值都将被忽略。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('reference')
->add('post','entity', array(
'class' => 'OpenSourceFeedBundle:Post',
'required' => TRUE,
'disabled' => true,
))
->add('date', 'date', array(
'html5' => TRUE,
'widget' => 'single_text',
'read_only' => TRUE
))
->add('message')
;
}