如何在 Pimcore 中显示本地化的数据对象字段值?

Posted

技术标签:

【中文标题】如何在 Pimcore 中显示本地化的数据对象字段值?【英文标题】:How to display localized dataobject field value in Pimcore? 【发布时间】:2021-10-27 13:40:53 【问题描述】:

我有具有本地化字段和本地化 URI slug 字段的数据对象。

Controller 通过 Slug 自动查找数据对象:

public function detailAction(
    Request $request,
    DataObject\FooDataObject $object,
    DataObject\Data\UrlSlug $urlSlug
) 
     return [
        'FooPage' => $object,
    ];

树枝模板:

<h4> FooPage.headline </h4>

如何编写 Twig 模板,以便根据当前 Slug 用于查找数据对象的语言呈现值?

【问题讨论】:

【参考方案1】:

关于如何使用 slugs 的文档在这里https://pimcore.com/docs/pimcore/current/Development_Documentation/Objects/Object_Classes/Data_Types/Others.html#page_URL-Slug

我不建议对对象使用 getLocalizedValue -- 将语言设置为 $request 并允许 Pimcore 自己完成所有本地化工作要容易得多:

    public function detailAction(
        Request $request,
        DataObject\FooDataObject $object,
        DataObject\Data\UrlSlug $urlSlug
    ) 
        // set Locale from the localized field Slug
        $slugLocale = $urlSlug->getPosition();
        if ($slugLocale) 
            $request->setLocale($slugLocale);
            // you can get the locale now $request->getLocale()
        
        // we use param converters to the matched data object ($object)
        // $urlSlug contains the context information of the slug
        return [
            'FooPage' => $object,
        ];
    

所有 twigs 模板保持不变——值将根据 slug 的语言环境呈现

【讨论】:

以上是关于如何在 Pimcore 中显示本地化的数据对象字段值?的主要内容,如果未能解决你的问题,请参考以下文章

本地化字段集合 Pimcore

Pimcore:如何覆盖内置控制器

Pimcore - 相关对象值没有得到

将 pimcore 从服务器移动到本地时出现致命错误

Pimcore - 如何将自定义按钮添加到对象树菜单

列出对象时的 Pimcore 异常