无法在joomla 3中点击onUserBeforeSave事件

时间:2017-12-14 11:31:21

标签: joomla

我在用户文件中的代码 -

我正在尝试 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"],'');

    }
}

1 个答案:

答案 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),因为此事件是从那里触发的。如果被触发,那么这意味着您的代码正在运行,但没有效果。