Здесь вы можете найти мой n-й вопрос по Symfony2.
Я работаю с пакетом разбиения на страницы , который использует имя маршрута, указанное в файле routing.yml
. С моей точки зрения, этот подход не является гибким и приводит к грязному коду, поскольку, если я изменю имя маршрута, мне придется просмотреть все шаблоны Twig или файлы PHP, чтобы обновить имя маршрута. Это нормально для небольших веб-приложений, но создаст такую ошибку для более крупных приложений, а также потребует большой нагрузки для разработчика.
Итак, мне было интересно передать строковую переменную x объекту Pager
, предоставленному вышеупомянутым пакетом. Строка x должна быть инициализирована в контроллере и должна предоставлять желаемое имя маршрута, указанное в файле routing.yml
.
Приведу пример. Файл маршрутизации выглядит следующим образом:
//routing.yml
AcmeTestBundle_listall:
pattern: /test/page/{page}
defaults: { _controller: AcmeTestBundle:List:listall, page: 1 }
requirements:
page: \d+
Затем связанный контроллер:
//use something....
class ListController extends Controller
{
public function exampleAction($page)
{
$array = range(1, 100);
$adapter = new ArrayAdapter($array);
$pager = new Pager($adapter, array('page' => $page, 'limit' => 25));
return array('pager' => $pager);
}
}
Затем в шаблоне ветки $pager
получает имя маршрута, которое относится к указанному выше пакету
{% if pager.isPaginable %}
{{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
{{ item }}
{% endfor %}
Любая идея о том, как получить «AcmeTestBundle _строковое значение listall во время выполнения прямо внутри контроллера?