【发布时间】:2014-09-24 01:40:31
【问题描述】:
我有一个表单,它有一个类别字段下拉列表,其中包含一个 (OneToMany/ManyToOne) 到一个帖子实体。
情况:现在客户必须在下拉列表中选择类别,他们可能会犯选择错误类别的错误,这将转到另一个博客(如果他们选择了错误的类别)他们将无权将其更改回正确的类别。
为了缓解这个潜在的问题,我想做两个中的一个作为解决方案:
1) 根据他们有权访问的类别自动设置类别
2) 或限制用户仅选择他们有权访问的类别(例如,如果用户具有特定角色,他们只能在下拉菜单中获得该类别)
用户有一个 ROLE_USER 限制,只允许他们对他们有权访问的内容进行 CRUD。
例如,
ROLEUSER1 只能访问 /category1(并且可以在此使用 CRUD)
ROLEUSER2 只能访问 /category2(并且可以对此使用 CRUD)
ROLEUSER3 只能访问 /category3(并且可以对此使用 CRUD)
我该如何设置这样客户才不会犯选择错误类别的错误?
表格
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('body')
->add('author')
->add('category')
->add('file', 'file', array(
'label' => 'Image',
'required' => false
))
->add('created');
}
控制器
public function job1CreateAction(Request $request)
{
$entity = new Post();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('job1_show', array('id' => $entity->getId())));
}
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
private function createCreateForm(Post $entity)
{
$form = $this->createForm(new PostType(), $entity, array(
'action' => $this->generateUrl('job1_create'),
'method' => 'POST',
));
$form->add('submit', 'submit', array('label' => 'Create'));
return $form;
}
【问题讨论】:
标签: forms symfony drop-down-menu user-roles