表达式引擎fetch_action_id()无法解析

Chr*_*per 3 php expressionengine

所以我试图通过两种方式获取动作ID:

$ACT_ID = $this->EE->functions->fetch_action_id("classname", "function");
$ACT_ID = $FNS->fetch_action_id("classname", "function");
Run Code Online (Sandbox Code Playgroud)

但是,它仍然以此为输出:

{AID:classname:function} 
Run Code Online (Sandbox Code Playgroud)

当它输出到视图中时它不会解析它.我还需要做些什么吗?

Low*_*Low 15

对于EE2,有两种获取ACT ID的方法,具体取决于您将使用它的位置.

如果您在font-end/templates中使用$this->EE->functions->fetch_action_id('class', 'method');它,请使用,它将{AID:class:method}在模板中返回,模板解析器将依次替换为实际的ACT ID.这是出于性能原因; 只需要1个查询所有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.


Chr*_*rie 9

函数库中有一个未记录的方法"insert_action_ids",它解析模板中的action_id.因此,从您的插件中,如果您只想拥有操作ID号,则可以执行以下操作:

$ACT_ID = $this->EE->functions->insert_action_ids($this->EE->functions->fetch_action_id('classname', 'method'));
Run Code Online (Sandbox Code Playgroud)

更新

我应该补充一点,这种方法可以在任何地方使用 - 前端和CP.但正如一些人所提到的,当在模板中时,性能最好使用"insert_action_ids"方法,并让模板解析器用正确的操作ID替换它们.