2

我在我的(Sylius)项目中使用了 JMSI8nRoutingBundle,一切顺利。

我刚刚为我的一些路由(主要是产品)切换到 CMFRouting,但是当我启用 JMS i8n 路由时这些路由无法正常工作,这是我在使用时遇到的错误{{ path(product) }}

Catchable fatal error: Object of class MyApp\Model\MyProduct could not
be converted to string in C:\wamp\www\caissin\vendor\jms\i18n-routing-
bundle\JMS\I18nRoutingBundle\Router\I18nRouter.php on line 133

如果我禁用 JMS i8n 路由,那么 CMF 路由和经典路由一切都会顺利进行。

所以我的问题是:要让 JMS i8n 路由和 CMF 路由一起工作,有什么具体的事情要做吗?看起来JMS正在接管CMF,而不是一起做一个链条。

奇怪的是,我在谷歌上没有找到任何关于这个话题的东西。

提前致谢。

4

2 回答 2

2

问题是由 JMSi18nBundle 如何覆盖默认路由器引起的: https ://github.com/schmittjoh/JMSI18nRoutingBundle/issues/73

于 2014-06-24T09:53:26.500 回答
1

以下分支帮助我让 JMSI18nRoutingBundle 与 Sylius 一起工作:

https://github.com/ekyna/JMSI18nRoutingBundle/tree/symfony-cmf

在您的 composer.json 中注册自定义存储库:

"repositories": [
{
  "type": "vcs",
  "url": "https://github.com/ekyna/JMSI18nRoutingBundle.git"
}
]

并在“require”块中引用“symfony-cmf”分支

"jms/i18n-routing-bundle": "dev-symfony-cmf"

这应该可以解决问题。

不要忘记在 AppKernel.php 中注册捆绑包:

new \JMS\I18nRoutingBundle\JMSI18nRoutingBundle(),

并在 config.yml 中设置路由配置:

jms_i18n_routing:
    default_locale: "de"
    locales: [en, de]
    strategy: prefix

最后在终端上运行“composer update”。

更新:

要使登录/注销正常工作,您可能需要在防火墙定义中使用 Sylius 路由。

我用这个“form_login”参数更新了“主”防火墙:

form_login:
    provider: sylius_user_provider
    login_path: sylius_user_security_login
    check_path: sylius_user_security_check
    failure_path: sylius_user_security_login
    default_target_path: sylius_homepage
    use_forward:  false
    use_referer: true

以及这些“注销”设置:

logout:
    path: sylius_user_security_logout
    target: sylius_homepage
于 2015-09-04T12:06:56.870 回答