Пользовательские помощники в codeigniter - PullRequest
2 голосов
/ 12 марта 2012

Я создаю собственный помощник в ./application/helpers, однако получаю эту ошибку

Невозможно загрузить запрошенный файл помощников / curl_helper

код в моем файле помощника:

    function send(array $request, $url, $method)
{
    //Validating if the required extensions are installed or not
    if( !function_exists('json_encode') )   return false;
    if( !function_exists('curl_init') )     return false;

    //Converting the array into required json format
    $request = json_encode($request);

    //Setting header required for requests
    $header[] = "Content-type: application/json";
    $header[] = "Content-length: ".strlen($request) . "\r\n";

    //If the request method is get append the data into requests header
    if( $method == 'GET' or $method == 'get' )      $header[] = $request;

    //Initializing curl
    $ch = curl_init();
    //Setting curl options for request
    curl_setopt( $ch, CURLOPT_URL, $url);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
    curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $method );

    //If the request method is post add the data we need to enable post 
    //request and define the data in post fields
    if( $method == 'POST' or $method == 'post' ) {
        curl_setopt( $ch, CURLOPT_POST, 1);
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $request);
    }

    //Executing the curl request and storing the result in a variable
    $result = curl_exec( $ch );
    //Closing curl conneciton
    curl_close($ch);

    return json_decode($result);
}

И я загружаю его в свою библиотеку, например:

$this->loader =& get_instance();
$this->loader->load->helper('curl');

Скажите, где я делаю неправильно?

UPDATE: Попробовав слишком много вещей, когда я поместил функцию в ту же библиотеку, где я хочу ее использовать, я обнаружил, что в строке

curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );

есть ошибка, когда я комментирую эту строку, функция работает нормально.Я не знаю, где ошибка, пожалуйста, помогите мне.И, насколько я думаю, это является причиной ошибки загрузчика.

Ответы [ 3 ]

3 голосов
/ 12 марта 2012

Используете ли вы CodeIgniter> = v 2.0.3? Изучив код загрузчика воспламенителя кода, я вижу только несколько способов, с которыми не удается загрузить вспомогательную систему:

  • Файл назван неправильно. Ваш файл должен иметь расширение .php, т.е. curl_helper.php, но, кажется, вы уже это проверили.
  • Файл не в нужном месте (приложение / помощники). Опять же, кажется, вы уже это проверили.
  • Файл недоступен запущенным веб-сервером. Проблемы с разрешениями?
  • Префикс подкласса: каковы ваши настройки для префикса подкласса? Это настройка по умолчанию:

    $ config ['subclass_prefix'] = 'MY _';

    CI позволяет пользователям переопределять своих помощников по умолчанию, назначая им префикс. Например, вы можете переопределить вспомогательный массив, имея файл с именем MY_array_helper.php. Если случается так, что ваш помощник совпадает с префиксом подкласса, то CI предполагает, что вы пытаетесь переопределить системный помощник, и пытается убедиться, что помощник существует в каталоге системных помощников. Например, если у вас есть помощник в application / helpers / MY_curl_helper.php, тогда CI проверит, существует ли помощник в system / helper / curl_helper.php. Другими словами, убедитесь, что файл вашего помощника НЕ ​​соответствует префиксу подкласса.

1 голос
/ 11 мая 2012

Ну, если вы используете "MY_helpername", тогда проверьте, не назвали ли вы файл на вашем сервере как "my_helpername", я не знаю причину, но CI будет искать my_helpername.php в папке помощников, но не MY_helpername. У меня есть эта проблема в прошлом, и изменение имени на моем linux box с MY_helpername на my_helpername мне помогло.

Надеюсь, это поможет

0 голосов
/ 12 сентября 2013

РЕШЕНИЕ: Для меня переименуйте файл в нижний регистр, и он отлично работает.

...