PUGXMultiUserBundle получить тип текущего пользователя

Как я могу получить тип текущего пользователя с PUGXMultiUserBundle? Этот код возвращает эту ошибку

{% if app.user.type == 'user_one' %}
//...
{% endif %}

Это ошибка

Method "type" for object "AppBundle\Entity\UserOne" does not exist

Это сущность пользователя

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="user")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"user_one" = "UserOne", "user_two" = "UserTwo"})
 *
 */

abstract class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

}

после обновления базы данных в таблице user создается новое поле с именем type

1 ответ

Решение

Ах, я вижу проблему. В файле ветки вы звоните:

{% if app.user.type == 'user_one' %}

Где "app.user" указывает объект, а "тип" указывает метод. Но у вас нет "метода", определенного в классе. Но вместо этого у вас есть DiscriminatorColumn.

Метод будет что-то вроде:

public function type(){
   ...
}

Надеюсь, это имеет смысл.

Другие вопросы по тегам