我正在尝试让动态路由器工作。但在我看来,事实并非如此。当我调用'/web/app_dev.php/de/test'时,我得到
Stack Trace: [1] Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /de/test"
at n/a
in /var/www/myProject/app/cache/dev/classes.php line 1882
at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(object(GetResponseEvent))
in line
at call_user_func(array(object(RouterListener), 'onKernelRequest'), object(GetResponseEvent))
in /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php line 450
at Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->Symfony\Component\HttpKernel\Debug\{closure}(object(GetResponseEvent))
in line
at call_user_func(object(Closure), object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1666
at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure)), 'kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1599
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1763
at Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php line 139
at Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/bootstrap.php.cache line 2804
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
in /var/www/myProject/app/bootstrap.php.cache line 2789
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
in /var/www/myProject/app/bootstrap.php.cache line 2918
at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true)
in /var/www/myProject/app/bootstrap.php.cache line 2220
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
in /var/www/myProject/web/app_dev.php line 29
[2] Symfony\Component\Routing\Exception\ResourceNotFoundException: None of the routers in the chain matched this request GET /myProject/web/app_dev.php/de/test HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Cache-Control: no-cache Connection: keep-alive Cookie: PHPSESSID=6a5ds9lfehu405ai79o7tm1h55; lunetics_locale=de Host: localhost Pragma: no-cache User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0 X-Php-Ob-Level: 1
at n/a
in /var/www/myProject/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/ChainRouter.php line 192
at Symfony\Cmf\Component\Routing\ChainRouter->doMatch('/de/test', object(Request))
in /var/www/myProject/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/ChainRouter.php line 147
at Symfony\Cmf\Component\Routing\ChainRouter->matchRequest(object(Request))
in /var/www/myProject/app/cache/dev/classes.php line 1869
at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(object(GetResponseEvent))
in line
at call_user_func(array(object(RouterListener), 'onKernelRequest'), object(GetResponseEvent))
in /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php line 450
at Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->Symfony\Component\HttpKernel\Debug\{closure}(object(GetResponseEvent))
in line
at call_user_func(object(Closure), object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1666
at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure), object(Closure)), 'kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1599
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/cache/dev/classes.php line 1763
at Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php line 139
at Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
in /var/www/myProject/app/bootstrap.php.cache line 2804
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
in /var/www/myProject/app/bootstrap.php.cache line 2789
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
in /var/www/myProject/app/bootstrap.php.cache line 2918
at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true)
in /var/www/myProject/app/bootstrap.php.cache line 2220
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
in /var/www/myProject/web/app_dev.php line 29
我的 Symfony 分析器也告诉我,没有任何查询发送到数据库。这就是我假设动态路由器没有检查 phpcr-nodes 的原因。
这是我的配置文件的片段:
# CMF Routing
cmf_routing:
chain:
routers_by_id:
cmf_routing.dynamic_router: 200
router.default: 100
dynamic:
controllers_by_class:
Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\RedirectRoute: cmf_routing.redirect_controller:redirectAction
persistence:
phpcr:
enabled: true
use_sonata_admin: true
content_basepath: /
route_basepath: /
locales:
- de
- en
cmf_core:
persistence:
phpcr:
enabled: true
basepath: /
cmf_block:
persistence:
phpcr:
enabled: true
manager_name: default
use_sonata_admin: true
content_basepath: /
use_imagine: false
cmf_content:
persistence:
phpcr:
content_basepath: /content
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
types:
json: Sonata\Doctrine\Types\JsonType
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# PHPCR
doctrine_phpcr:
session:
backend:
type: doctrinedbal
#connection: default
workspace: default
username: admin
password: admin
odm:
document_managers:
default:
auto_mapping: true
session: default
mappings:
CmfContentBundle: ~
CmfMenuBundle: ~
CmfRoutingBundle: ~
auto_generate_proxy_classes: %kernel.debug%
proxy_dir: %kernel.cache_dir%/doctrine/PHPCRProxies
proxy_namespace: PHPCRProxies
locales:
de: [en]
en: [de]
sonata_doctrine_phpcr_admin:
document_tree_defaults: [locale]
document_tree:
Doctrine\ODM\PHPCR\Document\Generic:
valid_children:
- all
Symfony\Cmf\Bundle\SimpleCmsBundle\Document\Page: ~
Symfony\Cmf\Bundle\RoutingBundle\Document\Route:
valid_children:
- Symfony\Cmf\Bundle\RoutingBundle\Document\Route
- Symfony\Cmf\Bundle\RoutingBundle\Document\RedirectRoute
Symfony\Cmf\Bundle\RoutingBundle\Document\RedirectRoute:
valid_children: []
Symfony\Cmf\Bundle\MenuBundle\Document\MenuNode:
valid_children:
- Symfony\Cmf\Bundle\MenuBundle\Document\MenuNode
- Symfony\Cmf\Bundle\MenuBundle\Document\MultilangMenuNode
Symfony\Cmf\Bundle\ContentBundle\Doctrine\Phpcr\StaticContent:
valid_children:
- all
Symfony\Cmf\Bundle\MenuBundle\Document\MultilangMenuNode:
valid_children:
- Symfony\Cmf\Bundle\MenuBundle\Document\MenuNode
- Symfony\Cmf\Bundle\MenuBundle\Document\MultilangMenuNode
我正在使用 Sonata Admin 并在后端配置了 /de/test 路由。这是生成的数据库条目:
| id | path | parent | local_name | namespace | workspace_name | identifier | type | props | depth | sort_order |
| 21 | /de/test | /de | test | | default | 24ec587c-b6f0-4a3f-af23-e107b0a21a32 | nt:unstructured | <?xml version="1.0" encoding="UTF-8"?><sv:node xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:rep="internal"><sv:property sv:name="jcr:primaryType" sv:type="Name" sv:multi-valued="0"><sv:value>nt:unstructured</sv:value></sv:property><sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multi-valued="1"><sv:value>phpcr:managed</sv:value><sv:value>mix:referenceable</sv:value></sv:property><sv:property sv:name="phpcr:class" sv:type="String" sv:multi-valued="0"><sv:value>Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route</sv:value></sv:property><sv:property sv:name="phpcr:classparents" sv:type="String" sv:multi-valued="1"><sv:value>Symfony\Component\Routing\Route</sv:value><sv:value>Symfony\Cmf\Bundle\RoutingBundle\Model\Route</sv:value></sv:property><sv:property sv:name="jcr:uuid" sv:type="String" sv:multi-valued="0"><sv:value>24ec587c-b6f0-4a3f-af23-e107b0a21a32</sv:value></sv:property><sv:property sv:name="host" sv:type="String" sv:multi-valued="0"><sv:value></sv:value></sv:property><sv:property sv:name="defaultsKeys" sv:type="String" sv:multi-valued="1"><sv:value>_controller</sv:value></sv:property><sv:property sv:name="defaults" sv:type="String" sv:multi-valued="1"><sv:value>ASVDefaultBundle:Default:index</sv:value></sv:property><sv:property sv:name="requirements" sv:type="String" sv:multi-valued="1"/><sv:property sv:name="options" sv:type="String" sv:multi-valued="1"/><sv:property sv:name="addFormatPattern" sv:type="Boolean" sv:multi-valued="0"><sv:value>0</sv:value></sv:property><sv:property sv:name="addTrailingSlash" sv:type="Boolean" sv:multi-valued="0"><sv:value>0</sv:value></sv:property></sv:node> | 2 | 2 |
这些是我的作曲家要求:
"require" : {
"doctrine/doctrine-fixtures-bundle" : "dev-master",
"jackalope/jackalope-doctrine-dbal" : "dev-master",
"friendsofsymfony/user-bundle" : "*",
"symfony/swiftmailer-bundle" : "2.3.*",
"sonata-project/cache-bundle" : "dev-master",
"doctrine/orm" : ">=2.2.3,<2.4-dev",
"sonata-project/user-bundle" : "dev-master",
"lunetics/locale-bundle" : "dev-master",
"twig/extensions" : "1.0.*",
"php" : ">=5.3.3",
"symfony-cmf/symfony-cmf" : "dev-master",
"symfony/monolog-bundle" : "2.3.*",
"sensio/distribution-bundle" : "2.3.*",
"symfony/symfony" : "2.3.*",
"doctrine/phpcr-bundle" : "1.0.0-beta4",
"sonata-project/doctrine-orm-admin-bundle" : "2.*",
"sonata-project/easy-extends-bundle" : "dev-master",
"doctrine/phpcr-odm" : "1.0.0-beta5",
"symfony/assetic-bundle" : "2.3.*",
"incenteev/composer-parameter-handler" : "~2.0",
"sonata-project/doctrine-phpcr-admin-bundle" : "dev-master",
"sonata-project/intl-bundle" : "dev-master",
"sensio/generator-bundle" : "2.3.*",
"sensio/framework-extra-bundle" : "2.3.*",
"doctrine/doctrine-bundle" : "1.2.*"
}
有谁知道是什么问题?