вопрос о модели symfony sfDoctrineRoute

#php #symfony1

#php #symfony1

Вопрос:

Я не мог полностью понять, как работает класс sfDoctrineRoute

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

 Comment:
  class: sfDoctrineRouteCollection
  options:
    prefix_path: :username/comment
    module: comment
    model: Comment
  

теперь, в executeNew() методе commentActions класса, этот код:

 $this->getRoute()->getObject()
  

вернет первый объект комментария в моей базе данных. конечно, я могу вручную создать new Comment() объект, но тогда в чем выгода использования sfDoctrineRoute класса вместо sfRoute ?

Ответ №1:

В случае executeNew использование маршрута doctrine практически / вообще не приносит пользы.

Рассмотрим вместо этого метод executeEdit (update, delete и show тоже одинаковы).

URL-адрес может быть следующим:

/комментарий/5/редактировать

(или, в вашем случае, /myusername/comment/5 /edit)

затем $this-> getRoute()-> GetObject() вернет комментарий 5 из базы данных, что избавит вас от необходимости загружать его (всего строка или 2 кода, но все же). И, отличная особенность, если в базе данных нет комментария 5, он автоматически обрабатывает это и вызывает ошибку 404 — так что вам также не нужно беспокоиться об этом.

Комментарии:

1. Добавление к списку плюсов, например, если вы решите перейти на URL-адрес на основе slug, вам нужно всего лишь изменить некоторые параметры маршрута, вместо того, чтобы изменять код во всех ваших действиях.

2. Да, вы правы.. большое спасибо! 🙂 кстати, есть ли способ запретить ему выбирать любую запись из моей базы данных в случае executeNew?