在FOSuserBundle中获取user的用户名值

时间:2016-01-20 05:04:53

标签: symfony fosuserbundle

我有多对多的实体关系,用户和项目 User实体只有一个字段,即id字段,因为它扩展了FOsUserBundle。我理解通过调用容器来访问当前登录的用户

$user = $this->container->get('security.context')->getToken()->getUser();

但事实并非如此。一个项目有很多用户保存在数据库中。现在我可以通过使用树枝循环来访问它

 users_projects//a many to many table
 project_id   user_id
 3             1
 3             2

<td>{% for user in project.users %}{{ user.id}}{% endfor %}</td>

outputs 1,2

用户实体没有getUsername方法,因为它只有一个id字段。你会如何显示用户名而不是i.d?

更新

已经解决了这个问题。我真的不确定它是否正确。在ProjectType中,我添加了这个

->add('users', 'entity', array(
          'class' => 'UserBundle:User',
          'query_builder' => function (EntityRepository $er) {
              return $er->createQueryBuilder('u')
                  ->orderBy('u.username', 'ASC');
          },
          'expanded' => true,
          'multiple' => true
        ))

使用此设置

 <td>
      {% for user in entity.users %}
          {{ user.username }}
           {% if not loop.last %},{% endif %}
      {% endfor %}
 </td>

现在有效。不要忘记包括

  use Doctrine\ORM\EntityRepository;

在FormType中,否则会抛出类似

的错误
  

可捕获的致命错误:传递给.....的参数1必须是\ EmployeeBundle \ Form \ EntityRepository的实例,Doctrine \ ORM \ EntityRepository的实例给出

0 个答案:

没有答案