Сообщения об ошибках в действиях редактирования не отображаются - PullRequest
0 голосов
/ 08 июля 2011

У меня есть правила проверки в модели, и все в порядке.Он проверяет, как я хочу, но в действиях «Редактировать», хотя он и не проверяется, не отображаются красные метки ошибок в текстовом поле.

Любой совет?

Спасибо.

Код модели (название модели Safpercent):

var $validate = array(
        'sequencia' => array(
            'must_be_numeric' => array(
                'rule' => 'Numeric',
                'message' => 'Number Field: insert only numbers.' 
            )
        ),
    );

Просмотр текстового поля:

echo $form->input('Safpercent.sequence', array('id' => 'sequence', 'options' => $criteria, 'label' => false, 'div' => false, 'style' => 'width: 300px'));

Код контроллера:

function edit($id = null) {
                $criteria = $this->Safpercent->Safrequirement->find('list', array('fields' => array('Safrequirement.sequencia', 'Safrequirement.descricao'), 'conditions' => array('Safrequirement.tipo' => 'ILC')));
                $this->set('criteria', $criteria);
                if (!$id && empty($this->data)) {
                    $this->Session->setFlash(RecordNotValid, 'flash_failure');
                    $this->redirect(array('controller' => 'safpercents', 'action'=>'index'));
        }
        if (!empty($this->data)) {
                    $sequencia = $this->data['Safpercent']['sequencia'];
                    if($this->data['Safpercent']['tipo'] == ''){$tipo = 'ILC';}else{$tipo = $this->data['Safpercent']['tipo'];} 
                    $encontro = $this->Safpercent->Safrequirement->find('all', array('conditions' => array('sequencia' => $sequencia, 'tipo' => $tipo)));
            if($encontro <> array()){
                        if ($this->Safpercent->save($this->data)) {
                            $this->Session->setFlash(RecordSaved, 'flash_success');
                            $this->redirect(array('controller' => 'safpercents', 'action'=>'index'));
                        }else{
                            $this->Session->setFlash(RecordNotSaved, 'flash_failure');
                        }
                    }else{
                        $this->Session->setFlash('A Sequência que tentou Inserir não existe. Verifique a tabela de novo, por favor.');
                    }   
                }
        if (empty($this->data)) {
                    $this->data = $this->Safpercent->read(null, $id);
                    $this->set('id', $id);
        }
                $this->set('cod_percent',$this->Safpercent->read(null, $id));
    }

(Португальские переменные и текст в некоторых случаях)

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Try

debug ($ this-> Safpercent-> validationErrors)

и посмотрите, нет ли ошибок

1 голос
/ 08 июля 2011

Теперь я вижу.В вашем контроллере вы используете поле sequencia, которое вы проверяете, но не делаете никакой проверки на этом этапе.Он передает не-число в запрос find, который затем возвращает ошибку или что-то еще, и save никогда не вызывается?

Прежде чем вы это сделаете:

$sequencia = $this->data['Safpercent']['sequencia'];

Вы должны проверить, что данные проверяются, вызывая это:

$this->ModelName->set($this->data);
if ($this->ModelName->validates()) {
    ... //do your business here

Таким образом, в основном, измените:

if (!empty($this->data)) {

на:

$this->Safpercent->set($this->data);
if (!empty($this->data) && $this->Safpercent->validates()) {
...