【问题标题】:Expression Engine fetch_action_id() not parsing表达式引擎 fetch_action_id() 不解析
【发布时间】:2011-10-11 17:05:19
【问题描述】:

所以我尝试了两种方式获取操作 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 对象是什么吗?这里没什么可说的。
  • $this->EE->functions->fetch_action_id() 是 EE2 语法; $FNS->fetch_action_id() 是 EE1 语法。现在 - 你到底想做什么?上下文是什么?它返回的正是它应该返回的,但它不会被解析 - 它只是作为字符串返回。
  • 您确定该操作已在 exp_actions 表中注册?
  • 克里斯,您注册了提议的 EE Stack Exchange 站点吗? area51.stackexchange.com/proposals/46387/expressionengine

标签: php expressionengine


【解决方案1】:

对于 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

【讨论】:

    【解决方案2】:

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

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

    更新

    我应该补充一点,这种方法适用于任何地方——前端以及 CP。但正如一些人所提到的,在模板中最好使用“insert_action_ids”方法并让模板解析器将这些替换为正确的操作 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      相关资源
      最近更新 更多