大佬教程收集整理的这篇文章主要介绍了php – 如何使用表单编辑symfony 2中的用户权限?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是目前的UserType表单.我想从容器中获取角色但是我似乎无法在没有它抛出错误的情况下工作.这些角色将正确填充下拉列表,但它不会显示当前分配的角色,也不会允许更新信息,因为它预期它是一个数组$entity-> addRoles(array(‘ROLE_SUPER_ADMIN’) );,但它只是作为一个字符串提交.
namespace Wes\AdminBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class UserType extends AbstractType { private $roles; public function __construct($roles) { $this->roles = $roles; } public function buildForm(FormBuilderInterface $builder,array $options) { $builder ->add('username') ->add('email') ->add('enabled') ->add('roles','choice',array( 'choices' => $this->flattenArray($this->roles),)) ->add('firstName') ->add('lastName') ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Wes\AdminBundle\Entity\User','roles' => null,'userRole' => null,)); } public function getName() { return 'wes_adminbundle_usertype'; } private function flattenArray(array $data) { $returnData = array(); foreach($data as $key => $value) { $tempValue = str_replace("ROLE_",'',$key); $tempValue = ucwords(strtolower(str_replace("_",' ',$tempvalue))); $returnData[$key] = $tempValue; } return $returnData; } }
这是控制器.
public function editAction($id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('WesAdminBundle:User')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find User entity.'); } $editForm = $this->createForm(new UserType($this->container->getParameter('security.role_hierarchy.roles')),$entity); $deleteForm = $this->createdeleteForm($id); return $this->render('WesAdminBundle:User:edit.html.twig',array( 'entity' => $entity,'edit_form' => $editForm->createView(),'delete_form' => $deleteForm->createView(),)); } /** * Edits an exisTing User entity. * */ public function updateAction(request $request,$id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('WesAdminBundle:User')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find User entity.'); } $deleteForm = $this->createdeleteForm($id); $editForm = $this->createForm(new UserType($this->container->getParameter('security.role_hierarchy.roles')),$entity); $editForm->bind($request); if ($editForm->isValid()) { $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('wes_admin_user_edit',array('id' => $id))); } return $this->render('WesAdminBundle:User:edit.html.twig',)); }
我已经打了几天了,我似乎无法让它正常工作.有什么想法吗?
$useRMANager = $this->container->get('fos_user.user_R_921_11845@anager'); $user = $useRMANager->findUserBy(array('id' => $id)); $editForm = $this->createForm(new UserType($this->container->getParameter('security.role_hierarchy.roles')),$user); if ($editForm->isValid()) { $useRMANager->updateUser($user); return $this->redirect($this->generateUrl('wes_admin_user_edit',array('id' => $id))); }
有关详细信息,请参阅https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/user_manager.rst(已编辑).
以上是大佬教程为你收集整理的php – 如何使用表单编辑symfony 2中的用户权限?全部内容,希望文章能够帮你解决php – 如何使用表单编辑symfony 2中的用户权限?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。