symfony 1.4 передача переменных между шаблонами и действиями
У меня есть индексная страница, которая включает в себя вызов ряда частичных значений с помощью оператора switch; и это работает. Теперь мне нужно ограничить доступ к частичной зависимости от типа пользователя; Более того, я считаю, что мой оператор switch должен быть в классе действий в соответствии с MVC, но я не могу заставить это работать. Это может быть лучше объяснено на примере:
Вот моя файловая структура для модуля панели инструментов:
..dashboard
..actions
..config
..templates
_admins.php
_employers.php
_employees.php
_guest.php
indexSuccess.php
Вот мой текущий шаблон indexSuccess (который в настоящее время работает ... но без ограничения доступа, если тип зарегистрированного пользователя не соответствует типу страницы):
$type = sfContext::getInstance()->getUser()->getGuardUser()->getProfile()->getType()->getName();
switch($type)
{
case ('Employer'):
include_partial('dashboard/employers');
$page_user_type = "employer"; //this example line currently does not exist, it's for example purpose below
$break;
case ('Employee'):
include_partial('dashboard/employees');
break;
case ('Administrator'):
include_partial('dashboard/admins');
break;
default: include_partial('dashboard/guest');
break;
}
Вот мой класс действий (в настоящее время пустой):
public function executeIndex(sfWebRequest $request)
{
}
По сути, мне нужен оператор switch, перенесенный в действие (я думаю), и добавленный метод forward404Unless (), который выполняет следующее:
$logged_user = sfContext::getInstance()->getUser()->getGuardUser()->getId();
$this->forward404Unless($logged_user == $page_user_type); //where the $page_user_type variable is retrieved by the switch statement in the example line above.
Я пытался использовать getAttribute () и setAttribute () безуспешно ... и я бы не стал делиться попытками из-за смущения. Просто новичок здесь ...
Любая помощь будет оценена. Заранее спасибо.
UPDATE:
Вот дополнительная информация о коммутаторе и различных частях:
Коммутатор отображает другую часть в зависимости от типа пользователя. Чего он не делает, так это не дает другим зарегистрированным пользователям другого типа доступа ко всем остальным частям ... что в моем дизайне очень плохо. Например: вошедшие в систему пользователи типа «работодатель» могут не просматривать частичное типа «сотрудник». В настоящее время они могут (явно введя другой URL-адрес), даже если они перенаправляются на соответствующую страницу во время действия index.
Страница 404 должна вызываться, когда пользователь неправильного типа пытается получить доступ к другой части, явно введя URL-адрес. Вот почему я пытался добавить переменную в состояние переключателя при вызове соответствующего партиала, а затем передать эту переменную в действие индекса, которое затем оценило бы ее и либо разрешило рендеринг партиала, либо если user_type и частичный_тип не сделали этого. совпадение -> перейти на страницу 404. Есть смысл? Надеюсь, я объяснил это достаточно подробно. Я уверен, что есть более простой способ ... Я просто недостаточно обучен, чтобы знать, что это может быть.
Я действительно ценю ваш ответ и пытаюсь решить мою проблему.