доступ к объекту пользователя в маршруте - PullRequest
0 голосов
/ 07 июня 2011

У меня есть следующий маршрут:

work:
  class: acWorkObjectRouteCollection
  options:
    prefix_path: /work
    module:      work
    model:       Work
    type:        object
    column:      workname
    model_methods:
      object: findBySlug

Как вы можете видеть, этот маршрут извлекает объект Work из базы данных методом findBySlug, а столбец слагов - workname. Все работает нормально, но я хочу, чтобы он вытянул Работу подключенного пользователя, поэтому, если 2 пользователя имеют одно и то же рабочее имя, он выберет правильное.

что-то вроде: ->andWhere('w.user_id = ?', $this->getUser()->getId() если хотите ..

конечно, я могу изменить URL-адрес маршрута на :username/work/:workname, но он выглядит менее профессионально и в этом нет особой необходимости, поскольку каждый пользователь сможет редактировать только свою собственную работу.

Есть идеи, как это сделать? возможно, если бы я мог получить доступ к объекту User в маршруте, я мог бы сделать это, но я не мог узнать, как ..

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Хотя это, как правило, плохая практика, я считаю, что это один из тех редких случаев, когда sfContext::getInstance() нельзя избежать. Используйте sfContext::getInstance()->getUser() в вашем findBySlug методе.

Перед его использованием, пожалуйста, прочитайте Почему sfContext :: getInstance () плохой , поэтому вы знаете о его проблемах.

0 голосов
/ 07 июня 2011

Разве вы не можете просто отредактировать нужный файл и добавить в код правильную инструкцию WHERE [используя andWhere (), конечно]?Это было бы намного проще.

AFAIR вы не можете получить доступ к пользовательским данным в маршрутах Symfony.Не автоматически в YAML.

Редактировать:

Я не пробовал это, но посмотрите:

http://oldforum.symfony -project.org /index.php / m / 85116 /

Если вы придете к чему-то полезному, пожалуйста, сообщите, я также хотел бы знать [и изменить этот ответ].;]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...