Как лучше всего настроить/добавить страницы в генератор администратора?
-
22-09-2019 - |
Вопрос
Я использую Symfony 1.4 и Doctrine.
Серверная часть моего приложения была создана с использованием генератора администратора Symfony.Это прекрасно работает, когда я хочу отобразить базовые вещи.
Но не так уж много документации о том, как его улучшить и добавить новые страницы.
Давайте возьмем пример:Я хочу разместить опубликованные элементы на одной странице и элементы, подлежащие публикации, на другой.В своем приложении я использовал несколько способов, но не могу понять, какой из них лучше:
- играться с фильтрами, а затем изменять шаблоны в зависимости от того, где вы находитесь?
- создание другого модуля, вызывающего другой
table_method
? - какая-то другая техника, о которой я не знаю?
Какова здесь лучшая практика?Как вы обычно делаете настройку администратора?
Решение
Здесь бессовестная самореклама.я написал Сообщение блога на этой неделе о настройке генератора администратора. Одной из вещей, которые я сделал, было добавление в генератор новых страниц и т. д.То, как я это сделал, возможно, немного жестковато, но работает хорошо :-)
Лучшее место для поиска — это автоматически сгенерированный класс действий для вашего модуля и его расширение в вашем модуле. app/module/actions/actions.class.php
файл.В частности, действие index, которое настраивает пейджер ORM.У вас должна быть возможность использовать любой запрос из вашего ORM для предоставления данных вашему пейджеру ORM — в тех случаях, когда мне нужно изменить его, я использую запрос Doctrine, сгенерированный таким же образом, как обычно, для передачи на пейджер.Это означает, что я могу настроить, какие поля будут отображаться, в том числе из других таблиц, объединенных в один запрос.Это ваш «табличный метод», упомянутый выше.
Фильтры будут работать так же хорошо — это зависит от вашего варианта использования и от того, подходят ли фильтры, особенно для отображения.Если вы хотите /showpublisheditems page
, то я бы использовал новое действие и новый запрос для пейджера.Если вам нужна оперативная настройка, воспользуйтесь опцией фильтра.
Документации по фильтрам, как мне показалось, тоже местами не хватало. Подсказка: они ищут addYourColumnNameColumnQuery()
метод в вашем классе фильтра верхнего уровня (lib/filter/...), который принимает переданный запрос и использует, например, addWhere("x.column_name = ?", $foo)
на переданный запрос.
Блех :-) извини, это был своего рода вынос мозга, но, надеюсь, это поможет!:-)