Codeigniter Helper函数返回错误

| 我想将以下代码用作辅助函数,因为它将从我的应用程序中的多个控制器中调用。 如您所见,这是一个PHP卷曲,用于将文本发布到用户的Facebook墙上。
} elseif ($this->input->post(\'post_facebook\')) { //\"post to facebook\" checkbox is ticked

        $this->load->model(\'facebook_model\');

        $token = $this->facebook_model->get_facebook_cookie();

        $attachment =  array(
            \'access_token\'  => $token[\'access_token\'],
            \'message\'       => $post[\'posts_text\'],
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,\'https://graph.facebook.com/\' . $token[\'uid\'] . \'/feed\');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
        $result = curl_exec($ch);
        curl_close($ch);
当在控制器内部时,此代码可完美工作。但是我想做这样的事情: 将其放在helpers / functions_helper.php中:
function post_facebook_wall($post) {

    $this->load->model(\'facebook_model\');

    $token = $this->facebook_model->get_facebook_cookie();

    $attachment =  array(
        \'access_token\'  => $token[\'access_token\'],
        \'message\'       => $post[\'posts_text\'],
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,\'https://graph.facebook.com/\' . $token[\'uid\'] . \'/feed\');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
    $result = curl_exec($ch);
    curl_close($ch);        }
然后在我的控制器中:
...
} elseif ($this->input->post(\'post_facebook\')) { //post to facebook checkbox is ticked

    $post = array(\'posts_text\' => \'sample text\');

    post_facebook_wall($post);

}
不幸的是,这行不通,并且出现500错误。
functions_helper.php
自动加载。 有任何想法我在这里做错了吗?提前致谢。     
已邀请:
        助手是具有功能的文件,而不是类。但是在助手中,您无法像在Codeigniter的其余部分中那样加载模型和库。为此,您需要创建主类的实例, 这是您的帮助程序,functions_helper.php,位于application / helpers /中:
   If ( ! defined(\'BASEPATH\')) exit(\'No direct script access allowed\');

   If ( ! function_exists(\'post_facebook_wall\'))
   {
      function post_facebook_wall($post) {

        $CI =& get_instance();   //instantiate CodeIngiter main class
        //now you can call your models:
        $CI->load->model(\'facebook_model\');

        $token = $CI->facebook_model->get_facebook_cookie();
        $attachment =  array(
        \'access_token\'  => $token[\'access_token\'],
        \'message\'       => $post[\'posts_text\'] );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,\'https://graph.facebook.com/\' . $token[\'uid\'] . \'/feed\');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
        $result = curl_exec($ch);
        curl_close($ch);
    }
现在,在控制器,模型或视图中,您必须加载您的自定义帮助程序(或将其放置在application / config / autoload.php
$autoload[\'helper\'] = array(\'functions_helper\')
中的自动加载器数组中; ),
   $this->load->helper(\'functions_helper\');
现在,您可以按常规方式访问功能了,
$this->functions_helper->post_facebook_wall($post)
    
        您不能在函数内引用$ this(了解OOP) 使用get_instance()获取对控制器对象的引用,例如:
$obj = get_instance();
$obj->load->model(\'facebook_model\');
// etc
    

要回复问题请先登录注册