CakePHP Model-> invalidate не показывает ошибку - PullRequest
8 голосов
/ 06 апреля 2011

В настоящее время я работаю над дополнительной проверкой формы в обратном вызове beforeValidate() модели.

У меня есть следующий код:

function beforeValidate(){
    $i = 0;
    foreach($this->data['CapitalCategory'] as $capital_category){
        if(!empty($capital_category['value'])){
            $this->invalidate('CapitalCategory.'.$i.'.points', 'error!');   
                return false;
            }

        $i++;
    }
    return true;
}

Я все отладил, и он возвращает false, если значение присутствует. Но затем форма перезагружается, и под вводом точек не отображается сообщение! Кроме того, если я отлаживаю validationErrors, массив содержит ошибку, которая должна отображаться. В чем может быть проблема?

Ценю любую помощь!

EDIT

Вот как я строю свои входные данные:

echo $this->Form->input('CapitalCategory.'.$i.'.value', array('label' => $category['Category']['name'], 'type' => 'text'));
        echo $this->Form->input('CapitalCategory.'.$i.'.points', array('label' => 'Puncte', 'type' => 'text'));

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

Ответы [ 3 ]

1 голос
/ 24 июня 2014

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

$this->Form->error( 'field' );

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

Вот ссылка на функцию торта в API, если вы хотите посмотреть. FormHelper API 2.4

0 голосов
/ 06 апреля 2011

Убедитесь, что вы не путаете модель :: $ validationErrors и Controller :: $ validationError.Они разные и не имеют магической связи.Один заполняется методами модели, другой заполняется методами контроллера.

0 голосов
/ 06 апреля 2011

Возможно, это связано с тем, что CakePHP не знает, куда поместить сообщение об ошибке

при вызове $this->invalidate ( $name );
$name должно совпадать с именем поля (ввода), которое вы создали..

Итак, можете ли вы показать мне, как вы создаете поля ввода (поля)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...