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() безуспешно... и я бы предпочел не делиться попытками из-за смущения. Просто новичок здесь...
Любая помощь будет оценена. Заранее спасибо.
ОБНОВИТЬ:
Вот дополнительная информация о переключателе и различных частях:
Переключатель отображает другой фрагмент в зависимости от типа пользователя. Чего он не делает, так это не позволяет другим вошедшим в систему пользователям другого типа получать доступ ко всем другим частям ... что в моем дизайне очень плохо. Например: зарегистрированные пользователи типа «работодатель» не могут просматривать часть типа «сотрудник». В настоящее время они могут (путем явного ввода другого URL-адреса), даже если они перенаправляются на соответствующую страницу во время действия индекса.
Страница 404 должна вызываться, когда пользователь неправильного типа пытается получить доступ к другому частичному, явно введя URL-адрес. Вот почему я пытался добавить переменную в статус переключателя при вызове соответствующего партиала, а затем передать эту переменную в действие индекса, которое затем оценит ее и либо разрешит визуализацию партиала, либо если user_type и partial_type не match -> перенаправить на страницу 404. Есть смысл? Я надеюсь, что объяснил это достаточно тщательно. Я уверен, что есть более простой способ... Я просто недостаточно обучен, чтобы знать, что это может быть.
Я очень ценю ваш ответ и пытаюсь решить мою проблему.