Ну, чтение роли без префикса «РОЛЬ» - это не то, что я бы делал, используя события. Поскольку они запутывают ваш рабочий процесс, события должны использоваться с осторожностью! Работая с Symfony некоторое время, я использовал их один или два раза, когда другого пути действительно не было. В остальное время был лучший способ.
Я бы хотел добавить функцию getShortRole и setShortRole и использовать shortRole в вашей сущности:
class MyEntity {
private $role;
public function setShortRole($role) {
$this->role = 'ROLE_' . strtoupper($role);
}
public function getShortRole() {
return strtoupper(preg_replace('/^ROLE_/i', '', $this->role));
}
}
Вы избавляете себя от множества проблем, работая с моделями вместо событий!
Второй, более сложный способ - использовать модель, которая представляет форму вместо сущности и отображает форму на сущность. Вот хорошая статья об этом здесь !
Я использую это сам, и это работает хорошо.