Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Стандартные правила валидации - Часть 1
http://forum.kohanaframework.su/viewtopic.php?f=21&t=193
Страница 1 из 1

Автор:  admin [ 21 май 2012, 23:55 ]
Заголовок сообщения:  Стандартные правила валидации - Часть 1

В уроке "Стандартные правила валидации - Часть 1" рассматриваются правила валидации, которые встроены в Кохану и охватывают основные проверки, которые могут понадобиться. Рассмотрена примерно половина из всех правил.
Адрес урока:
http://kohanaframework.su/advanced/provided_rules_p1

Автор:  demyan112rv [ 14 июн 2012, 21:11 ]
Заголовок сообщения:  Re: Стандартные правила валидации - Часть 1

Добрый день! Вот изучаю потихоньку Кохану. Создал страницу обратной связи. При вводе данных и отправке данные записываются нормально. Но вот как добавил валидацию, постоянно выводится сообщение о том, что поля feedback_name, feedback_email не должны быть пустыми. Т.е. валидация работает не корректно. В чем моя ошибка?
Вот ВИД:
Код:
<?php 
if($errors)
{
   foreach($errors as $value)
   {
      echo $value.'<br>';
   }
}
?>
<form method="post" action="" >
<p>Ф.И.О. * </p>         
<input type="text" name="feedback_name" value="">
<p>E-mail * </p>
<input type="text" name="feedback_email" value="">
<p>Содержание сообщения * </p>
<textarea name="feedback_content" rows="3" cols="30"></textarea>
<input type="submit"  name="feedback_submit" alt="Отправить сообщение" value="Отправить сообщение" />      
</form>


Вот КОНТРОЛЛЕР:
Код:
public function action_contacts() {
   if($_POST)
      {
         $fb = ORM::factory('feedback');
         $fb -> name = $_POST['feedback_name'];
         $fb -> email = $_POST['feedback_email']
         $fb -> content = $_POST['feedback_content'];

         try
         {
            $fb -> save();
         }
         catch(ORM_Validation_Exception $e)
         {
            $errors = $e->errors('validation');
         }
      }
      
      $content = View::factory('index/page/v_page_contacts')
         ->bind('errors',$errors);
            
   // Выводим в шаблон
        $this->template->page_title = 'Контакты';
        $this->template->block_center = array($content);
         
    }


И вот МОДЕЛЬ:
Код:
class Model_Feedback extends ORM {
    protected $_table_name = 'feedbacks';
    protected $_primary_key = 'id';
    protected $_db_group = 'default';
   
   public function rules()
   {
      return array(
         'feedback_name' => array(
            array('not_empty'),
         ),
     'feedback_email' => array(
            array('not_empty'),
            array('email'),
         ),
      );
   }
   
public function labels()
    {
        return array(
            'feedback_name' => 'Ф.И.О.',
   'feedback_email' => 'E-mail',
        );
    }
   
public function filters()
    {
        return array(
            TRUE => array(
                array('trim'),
            ),
        );
    }
}

Автор:  mamahtehok [ 15 июн 2012, 14:43 ]
Заголовок сообщения:  Re: Стандартные правила валидации - Часть 1

в моделе имена полей долджны быть не
'feedback_name'
'feedback_email'
а
'name'
'email'

Автор:  demyan112rv [ 15 июн 2012, 18:27 ]
Заголовок сообщения:  Re: Стандартные правила валидации - Часть 1

mamahtehok писал(а):
в моделе имена полей долджны быть не
'feedback_name'
'feedback_email'
а
'name'
'email'

Спасибо огромное! Вчера целый день мучался, так и не разобравшись. Если не трудно, не могли бы Вы пояснить почему именно 'name' вместо 'feedback_name' и 'email' вместо 'feedback_email'
Заранее спасибо!

Автор:  admin [ 17 июн 2012, 01:01 ]
Заголовок сообщения:  Re: Стандартные правила валидации - Часть 1

Потому что
Код:
$fb -> name = $_POST['feedback_name'];
$fb -> email = $_POST['feedback_email']


Он из левой части берет.
Можно вообще так написать
Код:
$fb -> name = 123;


Без участия $_POST['feedback_name']

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/