1 Отредактировано Ivanovich (2010-08-02 12:43:53)

Тема: Не работает в роутере заданный метод method_for_query

Все привет!
Мне надо вывести одной моделью разные группы пользователей (гуарда).
Почитав доку - узнал, что можно задать метод в роуте, сделал таким образом:
sf_guard_user:
  url:           admin_user
  class:         sfDoctrineRoute
  options:       { model: sfGuardUser, type: list, method_for_query: retrieveByUserAdmin }
  param:         { module: sfGuardUser} 

или ещё сделал:

sf_guard_user:
  class: sfDoctrineRouteCollection
  options:
    model:                sfGuardUser
    method_for_query:     retrieveByUserAdmin
    module:               sfGuardUser
    prefix_path:          admin_user
    with_wildcard_routes: true
    collection_actions:
      filter: get
      search: post
    requirements: array()

В общем вызывается модуль, но нет обращения к модели и тем более методу. Например я "порчу" запрос:
    model:                sfGuardUserwwwwwwwwwwwww
    method_for_query:     retrieveByUserAdminwwwwwwwwwwww
В результат - никакой реакции, всё выводится полным списком, ошибок нет!!!
Как сделать правильно обращение к модели с методом? Такое возможно?

Подскажите.

2 Отредактировано relo_san (2010-08-02 12:52:27)

Re: Не работает в роутере заданный метод method_for_query

Вы метод задаете роутеру, а кто вам сказал, что ваш модуль, который выводит список, использует роутинг для получения серии объектов? Посмотрите в соответствующий метод (предположительно executeIndex()) своего модуля. Скорее всего он про "умный" роутинг ничего не знает и работает "сам по себе".
Задать метод в роутере то можно, но нужно же еще заставить модуль с этим работать.

В вашем случае можете просто в generator.yml вашего модуля указать в блоке list параметр table_method и получить все то же самое.

3 Отредактировано Ivanovich (2010-08-02 13:01:56)

Re: Не работает в роутере заданный метод method_for_query

Это роутниг Групп Гуарда.
У меня 4 группы, тогда мне надо создавать 4 модуля со своими конфигами(генераторами)?
Как заставить модуль с этим методом через роутер работать.?

4

Re: Не работает в роутере заданный метод method_for_query

$this->getRoute()->getObjects(); в методе контроллера модуля, и вы получите свои объекты из вашего метода в модели.
Вариант с генератором - гибче. По крайней мере я понятия не имею, как вы через роут получите постраничные данные, не добавляя в ваш метод соответствующую функциональность пейджера. Квери для пейджера роут вам не отдаст.