Codeigniter Datamapper не работает, чтобы получить правила для полей со значениями NULL

Я использую Datamapper v1.8.2 с Codeigniter v2.1.2 и имею правило "get", которое, похоже, не работает с полями с NULL значениями. Вот модель:

class Page extends Datamapper {

    public $validation = array(
        'name' => array(
            'rules' => array('required'),
            'get_rules' => array('get_page_name')
        )
    );

    function _get_page_name($field)
    {
        $this->$field = 'TESTING '.$this->id;
    }

}

Пример кода:

$page = new Page();
foreach ($page->get() as $p) echo $p->name;

Когда поле таблицы name имеет любое ненулевое значение, включая пустую строку, оно работает нормально, выводя что-то вроде TESTING 358, но когда значение равно NULL (которое является значением по умолчанию для этого поля), оно ничего не выводит. Нет никакой разницы при использовании get_iterated().

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

Кроме того, если бы кто-нибудь мог указать мне на нужную тему на форумах CI для поддержки Datamapper 1.8.2, это было бы здорово, я пытаюсь найти ее и теряюсь в лабиринте ссылок на темы для старых версий DM.


person Wesley Murch    schedule 05.08.2012    source источник


Ответы (1)


Вам нужно добавить allow_null к массиву get_rules, чтобы это работало. Я не уверен в намерениях создателя, но это как реализованы get_rules (однако я не вижу упоминания об этом в документации).

person complex857    schedule 06.08.2012
comment
Это было так, спасибо! Поиск Google для codeigniter datamapper allow_null вернул только результаты, которые были исходным кодом DM, так что я думаю, что нет документации по этому поводу? Даже эта страница не открылась, и обычно ТАК посты находятся вверху результатов. Не то чтобы я заранее знал, что нужно искать allow_null, просто проверял, было ли это задокументировано. - person Wesley Murch; 06.08.2012
comment
Я никогда не видел документации об этом, просто наткнулся на нее однажды во время отладки. Я предполагаю, что это не задокументировано больше, чем эти две строки комментария. - person complex857; 06.08.2012
comment
В следующий раз, когда вы столкнетесь с чем-то подобным, будьте так добры, создайте для этого проблему на битбакете, чтобы ее можно было исправить. - person WanWizard; 13.08.2012