从视图/控制器获取 pimcore 片段名称

Posted

技术标签:

【中文标题】从视图/控制器获取 pimcore 片段名称【英文标题】:Get pimcore snippet name from view / controller 【发布时间】:2014-05-13 14:55:39 【问题描述】:

我以这种方式使用 Pimcore 的 sn-p:

<?php echo $this->snippet("mySnippet"); ?>

如何从视图/控制器中获取 sn-p(“mySnippet”)的名称?

谢谢。

【问题讨论】:

【参考方案1】:

获取 sn-p 可编辑的名称有点困难,因为嵌入的 sn-p 不知道它的容器(参见源文件/pimcore/models/Document/Tag/snippet.php)。我能想到的最佳解决方案(虽然有点难看)是将名称作为参数传递给 sn-p,如下所示:

<?php echo $this->snippet("mySnippet", array("snippetName" => "mySnippet")); ?>

然后在sn -p视图中获取这个参数的值:

<?php echo $this->request->snippetName; ?>

另一种方法是编辑 Pimcore 的源文件以自动传递名称,但请记住,当更新到新版本的 Pimcore 时,这可能会导致问题。但是如果你想使用这种方法,请将以下内容添加到文件/pimcore/models/Document/Tag/snippet.php

$params["snippetName"] = $this->name;

就在函数frontend() 中的$params["document"] = $this-&gt;snippet; 行下方。 (在 pimcore 2.1.0 中,这将是第 91 行)

【讨论】:

我认为你没有抓住重点。我需要从 sn-p 的角度获取值“mySnippet”。换句话说,得到它自己的名字。当我在 sn-p 视图中使用$this-&gt;document-&gt;key 时,我得到的是文档密钥而不是 sn-p 名称。 哦,是的,我误解了这个问题。这有点难,但我在更新的答案中给了你一个可能的解决方法。 还添加了一个替代解决方案来编辑​​ Pimcore 源,以便在嵌入时始终将名称传递给 sn-p。

以上是关于从视图/控制器获取 pimcore 片段名称的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从布局中获取视图名称?

Pimcore:如何覆盖内置控制器

如何覆盖 Pimcore 插件中的控制器

模型视图控制器:控制器或模型是不是从服务器获取数据?

如何获取视图控制器的名称?

试图获取非对象的属性“名称”