【问题标题】:Joomla! 3: Custom plugin event onUserBeforeSave validationJoomla! 3:自定义插件事件onUserBeforeSave验证
【发布时间】:2013-11-18 11:33:18
【问题描述】:

我创建了用于验证用户配置文件更改的自定义插件。我对 onUserBeforeSave 事件有奇怪的问题。

为了让示例尽可能简单,我缩短了代码

public function onUserBeforeSave($user, $isnew, $new)
{
  JError::raiseWarning(1000, 'Save disabled');      
  return false;
}

所以我在任何用户数据更改时都返回 false。一切正常,joomla 抛出错误并返回配置文件编辑,但数据保存在数据库中。

是否有可能完成这项工作或有人有不同的经历?

提前,谢谢!

编辑:好的,我改变了我的看法,它保存在用户会话或缓存中,因为当我在保存失败后返回配置文件时,我看到我已经更改了数据,但在重新登录(注销、登录)之后数据不变。如何摆脱它,它可能会使用户感到困惑。

【问题讨论】:

    标签: validation events plugins joomla3.0


    【解决方案1】:

    销毁会话:

    $session = JFactory::getSession();
    $session->destroy();
    

    顺便说一句,Jerror 自 11.1 起已被弃用。您应该改用异常:

    throw new Exception('Save disabled', 1000);
    

    希望对你有帮助

    【讨论】:

    • 感谢您的回答,但这实际上会强制用户注销。我认为我需要做一些刷新用户会话。
    • 你可以使用其他JSession方法来代替destroy。如果您知道要清除的参数,可以使用 $session->clear($param_name);方法
    猜你喜欢
    • 2013-06-21
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多