Функция обратного вызова проверки формы codeigniter с несколькими аргументами: неопределенное смещение: 1 - PullRequest
0 голосов
/ 14 марта 2011

Я получаю несколько ошибок, перечисленных ниже моего кода.Также была ошибка mysql, но я понял эту ошибку из-за пустых значений массива частей.Я понятия не имею, почему я получаю эти ошибки.Может кто-то объяснить с исправлением также.

строка 106: $this->db->where($parts[1], $value);

код:

$this->form_validation->set_rules('alias','alias_exist','trim|xss_clean|callback_alias_exist_check[livestock.alias]');  

    function alias_exist_check($value, $str)
    {

        $parts = explode('.', $str);    
        $this->db->from($parts[0]);
        $this->db->where($parts[1], $value);
        $result = $this->db->get();

        echo $this->db->last_query();
        //return ($row->count > 0) ? FALSE : TRUE;
        //echo $table . ' ' . $column;
    }

ошибка:

Обнаружена ошибка PHP

Серьезность:Уведомление

Сообщение: неопределенное смещение: 1

Имя файла: controllers / validate_livestock.php

Номер строки: 106

Обнаружена ошибка PHP

Серьезность: Предупреждение

Сообщение: Невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/dickschi/public_html/lsms/system/libraries/Exceptions.php:166)

Имя файла: codeigniter / Common.php

Номер строки: 356

Спасибо,
Rich

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Зачем вам нужно передавать имя столбца и таблицу в функцию? Не можете ли вы просто сделать:

function alias_exist_check($value, $str)
{
    $this->db->from('livestock');
    $this->db->where('alias', $value);
    $result = $this->db->get();

    echo $this->db->last_query();
    //return ($row->count > 0) ? FALSE : TRUE;
    //echo $table . ' ' . $column;
}
1 голос
/ 14 марта 2011

Вы пытались применить этот патч?

https://bitbucket.org/ellislab/codeigniter/issue/139/validation-callback-parameter-does-not

Это патч для файла

/ system / library / Form_validation.php

, который содержит класс CI_Form_validation.В методе _execute() строка 491 замените строку

if (preg_match("/(callback_\w+)/", implode(' ', $rules), $match))

на

if (preg_match("/(callback_[\[\]\w]+)/", implode(' ', $rules), $match))

Дайте мне знать, если это не сработает.

...