【问题标题】:Symfony cmf v1.1 upgradeSymfony cmf v1.1 升级
【发布时间】:2014-05-21 05:32:17
【问题描述】:

我正在尝试将我们项目中的 symfony cmf 包从 v1.0 升级到 v1.1。

composer.json 升级前:

    "doctrine/phpcr-odm": "1.1.0-RC1 as 1.0",
    "doctrine/phpcr-bundle": "1.1.0-beta1 as 1.0",
    "phpcr/phpcr-utils": "1.1.0 as 1.0",        

    "symfony-cmf/routing-auto-bundle": "1.0.*@alpha",
    "symfony-cmf/menu-bundle": "1.0.*",
    "symfony-cmf/block-bundle": "1.0.*",
    "symfony-cmf/routing-bundle": "1.1.*",

    "jackalope/jackalope-jackrabbit": "1.1.*",
    "sonata-project/doctrine-phpcr-admin-bundle": "1.0.*",

composer.json 升级后:

    "doctrine/phpcr-bundle": "1.1.*",
    "doctrine/phpcr-odm": "1.1.*",

    "symfony-cmf/routing-auto-bundle": "1.0.*@alpha",
    "symfony-cmf/routing-bundle": "1.2.0 as 1.1.0",
    "symfony-cmf/core-bundle": "1.1.0 as 1.0.0",
    "symfony-cmf/menu-bundle": "1.1.*",
    "symfony-cmf/block-bundle": "1.1.*",

    "jackalope/jackalope-jackrabbit": "1.1.*",
    "sonata-project/doctrine-phpcr-admin-bundle": "1.1.*",

如您所见,为了能够使用 symfony-cmf/routing-auto-bundle,我在这两个地方都使用了 composer 别名。这种别名方法是我能够使用 symfony-cmf/routing-auto-bundle 的唯一方法。

因此,在使用上述更改进行作曲家更新后,我在项目的奏鸣曲管理区域中有一些失败的测试。 通过进行一些调试,我看到了以下变化。

下面是我如何加载页面固定装置。

    <?php // load Page fixtures

    protected function create($dm, $class, $parent_path, $data_file)
    {
        $parent = $dm->find(null, $parent_path);
        $data = $this->getData($data_file);

        foreach ($data as $item)
        {
            $doc = new $class();
            $doc->setParent($parent);

            if (is_array($item['title'])) {
                foreach ($item['title'] as $locale => $title) {

                    $doc = $this->createDoc($doc, $title, $item['body'][$locale], $locale);

                    $dm->persist($doc);
                    $dm->bindTranslation($doc, $locale);
                }
            } else {
                $doc = $this->createDoc($doc, $item['title'], $item['body']);

                $dm->persist($doc);
            }
        }

        $dm->flush();
    }

    protected function createDoc($doc, $title, $body, $locale = 'en')
    {
        $doc->setTitle($title);
        $doc->setContent($body);
        $doc->setlocale($locale);

        return $doc;
    }

我的问题是:

  1. 我在我的装置中使用了 bindTranslation() 方法。该方法是否已更改 cmf v1.1?这就是我在管理界面中看不到字段的原因吗? (我没有使用 simple-cms-bundle 或 content-bundle。)

  2. 这与上述无关。我应该继续使用吗 路由自动捆绑? (因为我在 SO 上没有看到很多关于它的问题。 所以我想也许人们并没有太多使用它)

感谢您就在我们的项目中使用 cmf 包提供的任何建议。

顺便说一句:我还阅读了 github 问题 @lsmith77 更新到 1.1.0-RC1,所以请不要指点我 ;)

请帮忙!如果您需要更多详细信息,我在这里。

谢谢。

【问题讨论】:

    标签: symfony-cmf


    【解决方案1】:

    bindTranslation 不应该改变,所以如果这是问题所在,那就是回归。您可以通过查看app/console doctrine:phpcr:node:dump --props /parent/path 的输出来调查它是否是固定装置的问题或稍后。无论您请求哪种语言,列表都是空的吗?

    您是否在 cmf_core 和教义_phpcr 上都配置了多语言?

    您可以通过在控制器或命令中加载文档并检查内容文档在这种情况下包含的内容来进一步调查。

    关于路由自动捆绑的讨论,最好来邮件列表http://groups.google.com/group/symfony-cmf-devs。它应该仍然会发生,但我们似乎错过了完成它的人。

    【讨论】:

    • @David 感谢您的快速回复。你是对的。我通过启用 cmf_core: multilang: 选项解决了这个问题。我很高兴,因为我今天能够合并我的升级分支:)。再次感谢您和您的团队在 symfony cmf 项目上所做的出色工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多