2013-08-13 3 views
2

Я обновляю CakePhp 1.1 до 1.2 (и далее) ... наконец.

У меня проблемы с проверкой формы. Я понял из документации, что обнаружил, что $ html-> tagErrorMsg устарел, и его необходимо изменить на $ form-> error.

Я сделал это во всех местах, но ошибки не отображаются. Они отлично работают в моей версии 1.1.

Вот код из .ctp

.ctp обыкновение быть:

<div class="column span-5"> 
<?php echo $html->input('Account/firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?> 
</div> 
<div class="column span-3 last"><span class="my_error"><?php echo $html->tagErrorMsg('Account/firstname', 'Please enter a first name.');?></span></div> 
</div> 

.ctp СЕЙЧАС:

<div class="column span-5"> 
<?php echo $form->input('Account/firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?> 
</div> 
<div class="column span-3 last"><span class="my_error"><?php echo $form->error('Account/firstname', 'Please enter a first name.');?></span></div> 
</div> 

В МОДЕЛИ (account.php): Я изменил его ОТ:

var $validate = array(
      'firstname' => VALID_NOT_EMPTY, 
    ); 

К:

var $validate = array(
     'firstname' => 'notEmpty', 
); 

Что я делаю неправильно? Не могли бы вы привести пример правильной проверки формы в 1.2 и выше?

ответ

2

Я понял. Есть еще несколько изменений конвенции между 1.1 и 1.2

В контроллере я должен был добавить:

   $this->Account->set($this->data); 
      if ($this->Account->validates()) { 
       // validated logic 
      } else { 
       // didn't validate logic 
       $errors = $this->Account->validationErrors; 
      } 

Однако, это не совсем сделать это либо. Мне также пришлось удалить ссылку «Account /» в файле ctp.

Вот правильная CTP:

<div class="column span-5"> 
<?php echo $form->input('firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?> 
</div> 
<div class="column span-3 last"><span class="my_error"><?php echo $form->error('firstname', 'Please enter a first name.');?></span></div> 
</div> 

Оказывается, что мои контроллеры также не были названы с использованием множественного числа конвенции. Поэтому мне пришлось добавить это также для того, чтобы моя функция $ form-> create() работала правильно.

<?php echo $form->create('Account', array('action' => 'register')); ?> 

Это идет в начале формы в CTP вместо

<form action="<?php echo $html->url('/account/register/'); ?>" method="post"> 
Смежные вопросы