【问题标题】:Front end editing in Joomla 2.5 - JController::checkEditId() returns falseJoomla 2.5 中的前端编辑 - JController::checkEditId() 返回 false
【发布时间】:2012-08-02 13:18:11
【问题描述】:

所以我遇到了一个奇怪的问题,似乎无法找到解决方案。也许有人遇到过同样的问题,可以解释一下。

我正在编写一个组件,我正在向它添加前端编辑,但是当我保存我的前端表单时,我最终得到了以下错误:

您不得使用该链接直接访问该页面 (#1)。

我已将问题追溯到 JController 中的 checkEditId() 函数。它返回 false ,因为“我以某种方式刚刚到达表单而没有单击链接”。所以我明白我必须以某种方式 setUserState('com_component.context.item', $id);因为问题是“id”不在用户状态会话中。

但是我在哪里添加呢?我尝试使用 setUserState() 函数手动添加它,但这似乎不起作用,我还可以看到 com_content 不是那样做的?

我该如何告诉 Joomla 允许用户编辑项目 - 不是从 ACL 的角度来看,而是从 - 他只是点击了编辑链接的角度来看?

【问题讨论】:

  • 你说的 是什么意思?“我是如何告诉 Joomla 允许用户编辑项目的——不是从 ACL 的角度来看,而是从一个角度来看——他只是点击了编辑链接观点?”
  • 我只是想说,现在我不想涉及 ACL,让我们假设所有登录的用户都可以编辑任何东西。所以换句话说,我不是在寻找与 ACL 相关的答案 - 只是一个关于如何通过 checkEditId($context, $id) 验证的答案。

标签: joomla joomla2.5 joomla-component


【解决方案1】:

我遇到了完全相同的问题。为我解决的问题是确保列表视图中的 URL 格式正确。所以我有:

administrator/index.php?option=com_helloworld&view=offer&layout=edit&offer_id=27

但您需要如下网址:

administrator/index.php?option=com_helloworld&task=offer.edit&offer_id=27

这可确保将正在编辑的项目的 ID 添加到会话范围中,然后在 checkEditId() 中进行检查。

这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多