Вы можете использовать функцию hasReference()
на модели.
например. ваша модель Customer
имеет отношение к User
вот так:
Customer:
relations:
user:
local: id
foreignID: id
foreignAlias: customer
Затем вы можете проверить, относится ли пользователь к типу customer (в контроллере):
$this->getUser()->getGuardUser()->hasReference('customer');
Чтобы упростить эту задачу, вы можете добавить этот метод в класс myUser
:
public function isCustomer() {
return $this->getGuardUser()->hasReference('customer');
}
То же самое, конечно, для предприятия.
Даже используя две разные таблицы, вы можете использовать метод hasCredential()
, и это самый простой способ, если вы хотите проверить только разрешение.
Если вы хотите получить доступ к определенным атрибутам предприятия и пользователя-клиента, вы также можете объединить оба подхода.
Обновление:
Что ж, если предположить, что у пользователей Клиентов и Предприятия разные разрешения, я бы остановился на подходе групп пользователей. Это лучше подходит для групповой модели sfGuard. Если вы тогда знаете, что пользователь находится в группе Customer
, вы знаете, что у пользователя есть ссылка на объект клиента.
Но это, конечно, означает, что вы должны назначить правильную группу новому пользователю для правильной работы.