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.
函数库中有一个未记录的方法"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替换它们.