InvalidConfigurationException при установке Symfony2 CMF
Просто попал в Symfony2, и я хотел использовать комплект CMF.
Я следую поваренной книге здесь: http://symfony.com/doc/current/cmf/cookbook/editions/cmf_core.html
При беге
composer.phar update
Я получаю эту ошибку:
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
When the dynamic router is enabled, you need to either enable one of the persistence layers or set the cmf_routing.dynamic.route_provider_service_id option
Какова правильная настройка для route_provider_service_id? Я не могу найти никаких документов по этому вопросу.
config.yml
# CMF config
cmf_routing:
chain:
routers_by_id:
cmf_routing.dynamic_router: 200
router.default: 100
dynamic:
enabled: true
route_provider_service_id: ~
sonata_block:
default_contexts: [cms]
Вот мой файл composer.json:
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"minimum-stability": "dev",
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.3.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.2.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.3.*",
"symfony/swiftmailer-bundle": "2.3.*",
"symfony/monolog-bundle": "2.3.*",
"sensio/distribution-bundle": "2.3.*",
"sensio/framework-extra-bundle": "2.3.*",
"sensio/generator-bundle": "2.3.*",
"incenteev/composer-parameter-handler": "~2.0",
"jackalope/jackalope-doctrine-dbal": "dev-master",
"doctrine/phpcr-bundle": "1.0.*",
"doctrine/phpcr-odm": "1.0.*",
"symfony-cmf/symfony-cmf": "1.0.*"
},
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "2.3-dev"
}
}
}
Если бы кто-то мог пролить свет на эти настройки cmf_routing, чтобы получить чистое обновление от композитора, было бы здорово.
Одна вещь, которая меня разочаровывает в этом новом методе Sym2, это то, что кажется, что каждый пакет, который вам нужен, поставляется с другим необходимым пакетом, компилируя ваши вероятности ошибок и путаницы.
ОБНОВИТЬ
Я посмотрел на динамическую конфигурацию здесь: http://symfony.com/doc/master/cmf/reference/configuration/routing.html
Это говорит это о route_provider_service_id:
route_provider_service_id
тип: строка
Когда ни один из постоянных уровней не включен, для получения маршрутов должна быть предоставлена услуга поставщика маршрутов. Это делается с помощью параметра route_provider_service_id.
Я понимаю, что если я не установлю постоянство, я должен добавить этот параметр. Я знаю, что настройка должна быть строкой. Но я не знаю, что такое service_id, поэтому я не знаю, какой может быть настройка. Возможно, мне все еще неясно, что я делаю с динамическим маршрутизатором.
Мне удалось это исправить, включив persistence.phpcr и указав имя manager_name: null
Устранена ошибка, но может быть так, что определение manager_name является важным шагом в получении CMF с нуля.
1 ответ
Вам необходимо настроить поставщика маршрутов. В противном случае маршрутизатор не будет знать, как загружать маршруты. Идея динамического маршрутизатора заключается в том, что вы можете загружать маршруты из базы данных, поэтому вам нужно указать, как их загружать. Вы можете либо включить persistence.phpcr или persistence.orm, либо предоставить свой собственный сервис.
Здесь есть введение в маршрутизацию cmf http://symfony.com/doc/master/cmf/book/routing.html
И более подробную информацию можно найти здесь http://symfony.com/doc/master/cmf/bundles/routing/dynamic.html (я только что разъяснил этот вопрос с провайдером маршрутов, так как понял, что это не очень явно).
Ссылка на конфигурацию для маршрутизации находится здесь: http://symfony.com/doc/master/cmf/reference/configuration/routing.html