Создание приложения с помощью Silex с использованием шаблона MVC. У меня немного проблема в отношении того, что я должен делать после того, как у меня есть коллекция маршрутов.Silex Маршрутизация для контроллеров
Вот мои самозагрузки для приложения:
<?php
namespace App;
use Igorw\Silex\ConfigServiceProvider;
use Silex\Application as Silex;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
class Bootstrap extends Silex
{
public function __construct()
{
$this['debug'] = true;
$this->registerDefaultParameters();
$this->registerDefaultServices();
$this->registerRoutes();
}
protected function registerDefaultParameters()
{
$paths = isset($this['base_path']) ? $this['base_path'] : array();
if (!isset($paths['base'])) {
$paths['base'] = realpath(__DIR__ . '/../');
}
$defaults = array(
'config' => $paths['base'] . '/App/Config',
'twig.path' => $paths['base'] . '/public/themes/base/templates'
);
foreach ($defaults as $key => $value) {
if (!isset($paths[$key])) {
$paths[$key] = $value;
}
}
$this['paths'] = $paths;
}
protected function registerDefaultServices()
{
$this->register(new ConfigServiceProvider($this['paths']['config'] . "/Services.yml"));
foreach($this['services'] as $serviceName => $serviceData)
{
$this->register(new $serviceData['class'],(array_key_exists('parameters',$serviceData)) ? $serviceData['parameters'] : array());
}
}
protected function registerRoutes()
{
$this->register(new ConfigServiceProvider($this['paths']['config'] . "/Routes.yml"));
$collection = new RouteCollection();
foreach($this['routes'] as $key => $value)
{
$collection->add($key, new Route(
$value['path'],
$value['defaults'],
array(),
array(),
null,
null,
$value['methods']
));
}
$this['routes'] = $collection;
}
}
Так как вы можете видеть, я настроить некоторый Params по умолчанию. Я также загружаю мои службы из файла YAML, который отлично работает. Затем я регистрирую маршруты снова из файла YAML. Я перебираю каждый маршрут в файле YAML и добавляю маршрут в RouteCollection, а затем повторно сохраняю его в приложении ['routes'].
Таким образом, я получаю $ this ['routes'], являющийся экземпляром 'RouteCollection' со всеми моими маршрутами в качестве экземпляров Route.
Теперь я хочу настроить все мои контроллеры для маршрутов. Моя проблема в том, что я хочу настроить продукт как можно более модульный. Поэтому вместо того, чтобы иметь папку с папками контроллеров и моделей, содержащую все контроллеры и все модели, я хочу иметь папку Core со всеми основными модулями в ней, например. базовый модуль, модуль страницы и контактный модуль. Каждый модуль имеет свои собственные представления моделей контроллеров и т. Д. Очень похоже на то, как ядро Magento.
Так что мой вопрос:
Теперь я мои маршруты установить, какие шаги мне нужно предпринять для того, чтобы сделать мои маршруты инстанцируют правильный контроллер и действие?
Мне нужно, чтобы это было динамичным, поэтому не было бы объявлено о каждом отдельном контроллере.
Любая помощь будет очень признательна.