Какой лучший способ настроить / добавить страницы в генератор администратора? - PullRequest
1 голос
/ 26 марта 2010

Я использую Symfony 1.4 и Doctrine.

Серверная часть моего приложения была построена с использованием админ-генератора Symfony. Он отлично работает, когда я хочу отобразить основные вещи.

Но не так много документации о том, как ее улучшить и добавить новые страницы.

Давайте рассмотрим пример: Я хочу перечислить опубликованные элементы на одной странице и подлежащие публикации элементы на другой. Я использовал несколько способов для этого в своем приложении, но не могу понять, какой из них лучший:

  • играть с фильтрами, а затем изменять шаблоны в зависимости от того, где вы находитесь?
  • создание другого модуля, вызывающего другой table_method?
  • какая-то другая техника, о которой я не знаю?

Какая лучшая практика здесь? Как вы обычно настраиваете своего администратора?

1 Ответ

2 голосов
/ 26 марта 2010

Бесстыдная самореклама здесь. На этой неделе я написал сообщение в блоге о настройке генератора администратора - одна из вещей, которые я сделал, - добавление новых страниц и т. Д. В генератор. То, как я это сделал, возможно, немного хардкорно, но работает хорошо: -)

Лучшее место для начала - это автоматически сгенерированный класс действий для вашего модуля и расширение его в файле app/module/actions/actions.class.php. В частности, действие index, которое устанавливает пейджер ORM. Вы должны иметь возможность использовать любой запрос из вашего ORM для предоставления пейджеру ORM данных - в тех случаях, когда мне нужно было его изменить, я использую запрос Doctrine, сгенерированный таким же образом, как обычно, для передачи на пейджер. Это означает, что я могу настроить отображаемые поля, в том числе из других таблиц, объединенных и т. Д. В одном запросе. Это ваш «настольный метод», упомянутый выше.

Фильтры будут работать так же хорошо - это зависит от вашего варианта использования и от того, подходят ли фильтры, особенно для отображения. Если вы хотите /showpublisheditems page, то я бы пошел с новым действием и новым запросом на пейджер. Если вы хотите выполнить настройку «на лету», воспользуйтесь параметром фильтра.

Документы фильтра, которые, как я думал, тоже местами не хватает - быстрый совет, они ищут метод addYourColumnNameColumnQuery() в вашем классе фильтров верхнего уровня (lib / filter / ...), который принимает переданный запрос и например, использует addWhere("x.column_name = ?", $foo) для запроса, переданного в.

Блех :-) извините, это была небольшая мозговая утечка, но, надеюсь, это поможет! : -)

...