#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?