Expression Engine的fetch_action_id()无法解析

3

我尝试了两种方法获取操作ID:

$ACT_ID = $this->EE->functions->fetch_action_id("classname", "function");
$ACT_ID = $FNS->fetch_action_id("classname", "function");

但是,它仍然给我这个作为输出:
{AID:classname:function} 

当输出到视图中时,它不对其进行解析。我需要做些什么?

你能澄清一下 $this->EE 或 $FNS 对象是什么吗?这里没有太多线索。 - John
$this->EE->functions->fetch_action_id() 是 EE2 语法;$FNS->fetch_action_id() 是 EE1 语法。现在 - 你到底想做什么?背景是什么?它返回的内容正是它应该返回的,但它不会被解析 - 它只是作为字符串返回。 - Derek Hogue
你确定该操作已在exp_actions表中注册了吗? - pvledoux
Chris,你是否已经注册了EE Stack Exchange网站的计划?http://area51.stackexchange.com/proposals/46387/expressionengine - Anna_MediaGirl
2个回答

15
对于EE2,获取ACT ID有两种方法,具体取决于你要在哪里使用它。
如果你在前端/模板中使用它,请使用$ this->EE->functions->fetch_action_id('class','method')函数,在模板中返回{AID:class:method},模板解析器会将其替换为实际的ACT ID。这样做是为了提高性能;只需查询所有ACT ID一次即可。如果没有找到有效的ACT ID,则AID字符串将保留在模板中。
如果你在后端/控制面板中使用它,请使用$this->EE->cp->fetch_action_id('class','method')函数返回实际的ACT ID。$ this->EE->cp对象仅在控制面板中可用(例如,mcp.your_module.php文件)。如果没有找到有效的ACT ID,则返回FALSE。

9

在Functions库中存在一个未经记录的方法"insert_action_ids",它可以解析模板中的action_id。 因此,如果您想要从您的插件中简单地获取action ID编号,可以执行以下操作:

$ACT_ID = $this->EE->functions->insert_action_ids($this->EE->functions->fetch_action_id('classname', 'method'));

更新

我应该补充说明,这种方法在任何地方都可以使用 - 前端和控制面板都可以。但是正如一些人所提到的,在模板中为了性能最好使用“insert_action_ids”方法,并让模板解析器将其替换为正确的操作ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接