У меня есть Page
объект, уникальность которого заключается в его PageDomain
. Схема настроена так, что таблица page
содержит поле page_domain_id
для создания взаимосвязи. Чтобы показать страницу, у меня есть действие executeShow
и пользовательский обработчик. Мой маршрут выглядит так:
page_show:
url: /:domain_slug/:slug
class: sfPropelRoute
options:
model: Page
type: object
method_for_criteria: doSelectByDomain
param: { module: page, action: show }
requirements:
sf_method: [get]
Например, у меня может быть /audience/create
, а также /behavior/create
. Мне нужно иметь возможность определить, какая страница запрашивается.
Назначение пользовательского обработчика (doSelectByDomain
) - ввести domain_slug
и извлекать / показывать страницу только в том случае, если ее домен также корректен. Однако я обнаружил, что, хотя параметр domain_slug
доступен в параметре действия $request
, у меня нет способа передать его в свой пользовательский обработчик, чтобы его можно было включить в то, что было получено.
Я понимаю, что могу получить доступ к объекту sfContext
непосредственно из моей модели, но это в лучшем случае не элегантно и нарушает MVC. Я не боюсь использовать это, если действительно нет лучшего способа, но кажется, что должно быть. Symfony предлагает метод setListCriteria
для списка маршрутов, но я не могу найти ничего похожего для маршрутов объектов.
Помощь? Спасибо.