我在用户文件中的代码 -
我正在尝试 onUserBeforeSave ,但在这种情况下,Joomla代码被执行,控件不会出现在我的代码中:
class PlgUserotp extends JPlugin
{
public function onUserBeforeSave($oldUser,$isnew,$newuser)
{
$errors = NULL;
$phone_number = NULL;
foreach ($newuser as $key => $value)
{
if($key=="username")
$username = $value;
elseif ($key=="email1")
$email = $value;
elseif ($key=="password1")
$password = $value;
else
$extra_data[$key]=$value;
}
//echo $username . $email .$password;
$this->startVerificationProcess($username,$email,$errors,$phone_number,$password,$extra_data);
//MoCurlOTP::mo_send_otp_token('EMAIL',$newuser["email1"],'');
}
}
答案 0 :(得分:1)
调试此问题的第一步是确保您的插件真正被加载。首先在一开始添加die('In my plugin');
,看看它是否真的死了。如果是这种情况,那么这意味着Joomla实际上正在加载你的插件(如果不是,那么请检查你的插件是否已启用,同时检查系统 - 缓存插件是否被禁用,以防万一)。
下一步是确保Joomla实例化您的插件对象,这是通过添加construct
方法,然后在该函数中添加die('In constructor');
来完成的。如果它没有显示此消息,则表示您的类名与XML清单文件中定义的类名不一致。
最后一步是通过在函数的最开头添加onUserBeforeSave
来检查die('In onUserBeforeSave');
是否真正被触发。如果它没有被触发,那么尝试调试文件libraries/src/User/User.php
(我假设您正在使用Joomla 3.8.x),因为此事件是从那里触发的。如果被触发,那么这意味着您的代码正在运行,但没有效果。