未定义方法CI_Loader :: plugin()出错

时间:2012-06-17 18:02:54

标签: codeigniter authentication

我收到以下错误:

  

在第1233行的C:\ wamp \ www \ Code \ application \ libraries \ DX_Auth.php中调用未定义的方法CI_Loader :: plugin()

关于此代码:

function captcha()
 {

    $this->ci->load->helper('url');


    $this->ci->load->plugin('dx_captcha');


    $captcha_dir = trim($this->ci->config->item('DX_captcha_path'), './');

5 个答案:

答案 0 :(得分:1)

确保您已将application / config / autoload.php中的任何数组值从$ autoload ['plugins']移动到$ autoload ['helpers'],否则您会发现内容中断。

这是reference

答案 1 :(得分:1)

您使用的是哪个版本的CI?插件已从2.x中删除并替换为帮助程序。 尝试使用reCaptcha,它有一个很好的库。

答案 2 :(得分:0)

你正在尝试加载一个插件并且不支持插件,如果我从CI版本2开始就记得它。如果是这种情况(似乎是这样)你需要将你的插件转换为帮助者。

答案 3 :(得分:0)

我认为您正在尝试在新版本的CodeIgniter上使用旧版本的DX_Auth。当前版本的DX_Auth与CI 2.x兼容,可在github上使用。

答案 4 :(得分:0)

解决此问题的一种简单方法是将此代码放在loader.php中。该插件的工作原理。转到System->Core->Loader.php

      /**
      * Load Plugin
       *
      * This function loads the specified plugin.
       *
     * @access      public
       * @param       array
      * @return      void
       */
     function plugin($plugins = array())
     {
              if ( ! is_array($plugins))
              {
                      $plugins = array($plugins);
             }

             foreach ($plugins as $plugin)
             {       
                      $plugin = strtolower(str_replace(EXT, '', str_replace('_pi', '', $plugin)).'_pi');              

                     if (isset($this->_ci_plugins[$plugin]))
                     {
                             continue;
                     }

                      if (file_exists(APPPATH.'plugins/'.$plugin.EXT))
                      {
                              include_once(APPPATH.'plugins/'.$plugin.EXT);   
                      }
                      else
                      {
                              if (file_exists(BASEPATH.'plugins/'.$plugin.EXT))
                              {
                                      include_once(BASEPATH.'plugins/'.$plugin.EXT);  
                              }
                              else
                              {
                                      show_error('Unable to load the requested file: plugins/'.$plugin.EXT);
                              }
                      }

                      $this->_ci_plugins[$plugin] = TRUE;
                      log_message('debug', 'Plugin loaded: '.$plugin);
              }               
      }

      // --------------------------------------------------------------------

      /**
       * Load Plugins
       *
       * This is simply an alias to the above function in case the
       * user has written the plural form of this function.
       *
       * @access      public
       * @param       array
       * @return      void
       */
      function plugins($plugins = array())
      {
              $this->plugin($plugins);
      }