代码之家  ›  专栏  ›  技术社区  ›  shivanee gupta

无法在joomla 3中命中onUserBeforeSave事件

  •  0
  • shivanee gupta  · 技术社区  · 8 年前

    用户文件中的我的代码-

    我正在努力 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 回复  |  直到 8 年前
        1
  •  1
  •   itoctopus    8 年前

    调试此问题的第一步是确保插件确实已加载。首先添加a die('In my plugin'); 一开始,看看它是否真的在死亡。如果是这种情况,那么这意味着Joomla确实在加载你的插件(如果不是,那么请检查你的插件是否已启用,同时检查系统缓存插件是否已禁用,以防万一)。

    下一步是确保Joomla正在实例化插件对象,这是通过添加 construct 方法,然后添加 die('In constructor'); 在该功能中。如果未显示此消息,则表示您的类名与XML清单文件中定义的类名不一致。

    最后一步是检查 onUserBeforeSave 通过添加 die('In onUserBeforeSave'); 在函数的最开始处。如果未触发,请尝试调试该文件 libraries/src/User/User.php (我假设您使用的是Joomla 3.8.x),因为此事件是从那里触发的。如果正在触发,则这意味着您的代码正在工作,但没有任何效果。