0

我为 joomla 编写了一个插件,将自定义字段添加到用户/注册组件。不同的用户组有 3 种不同的注册表单。

该插件起作用onUserAfterSave()并且工作正常,但是有一个问题。当原始用户组件中出现错误时,例如:“用户名已被使用”,表单将被重定向,并且既不调用onUserAfterSave()也不onUserBeforeSave()调用。

我想更改该重定向,但不更改核心,但由于没有调用任何插件事件,我不知道该怎么做。你们能帮帮我吗?也许我错过了什么!

是否有可能覆盖 save() 函数?

谢谢

4

3 回答 3

2

我多次遇到同样的问题,所以我可以分享我自己使用的解决方案。如果您不想编辑 Joomla 核心文件,可以执行以下操作:

  1. 创建您自己的注册视图模板覆盖。
  2. 复制components/com_users/controllers/registration.php文件并将其命名为registration2.php
  3. 在您的注册表单中覆盖将隐藏输入的“任务”值从registration.register更改为registration2.register
  4. 随意覆盖您喜欢的registration2.php类。

这完全是 Joomla 更新证明,因此您可以更新您的 joomla 版本而不必担心错误。

于 2013-11-08T12:47:57.970 回答
0

我认为您可能需要检查 joomla 在您的插件中所做的检查,并在插件本身中重定向,以防它无法通过。我看到了你的困境,我不知道更好的方法,但我会选择一个不同的事件来运行它,甚至可能在页面加载之后,然后在 javascript 中的 UI 事件上运行。

于 2013-11-07T17:04:17.267 回答
0

扩展用户注册/配置文件的唯一干净方法是创建一个像这样的配置文件插件

https://github.com/joomla/joomla-cms/blob/master/plugins/user/profile/profile.php

您可以在后端和前端扩展 com_users 表单。

于 2013-11-10T22:40:25.070 回答