четверг, 14 июля 2011 г.

Разбиваем routing.yml на несколько файлов

Если количество роутов в вашем routing.yml уверенно перевалило за 50, то, вероятно, ориентироваться в таком файле стало трудно. Самое очевидное решение - разбить его на несколько файлов. Но, увы, в symfony1 нет такой штатной возможности. Решение несложное. Как известно, в .yml можно использовать РНР-код. Что ж, попробуем! Пишем в самом начале routing.yml:

//Подключаем файлы роутингов из папки /app/config/routing/
<?php
$dir=dirname(__FILE__).'/routing/';
$dh = opendir($dir);
while ($file = readdir($dh))
{
  if (is_dir($file))
    continue;
    
  require_once($dir.$file);
}
?>


затем создаем папку /frontend/config/routing/

затем создаем там любое количество файлов .yml, по которым распределяем наши роуты так, как нам этого хочется (переносим все роуты из routing.yml). Таким образом в rounting.yml остается только РНР-код, а все роуты структурированы по отдельным файлам.

На производительности такое решение не скажется совершенно, т.к. все yml-файлы в dev преобразовываются в РНР-код и кэшируются.

Совет: поскольку имеет значение порядок, в котором описаны роуты, именуйте файлы в соответствии с порядком их подключения:

10.blog.routing.yml
20.news.routing.yml
30.private.routing.yml
40.common.routing.yml