Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 13 ноя 2018, 10:41

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 10:07 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Или так (тут вариантов масса)
В контроллере
Код:
    public function action_add()
    {
        if ($this->request->method() == HTTP_Request::POST)
        {
            $post = Model_News::getObjValidate($_POST);
            $errors = Model::factory('news')->saveForm($post);

            if ($errors === true)
            {
                echo 'Сохранили!';
                // редирект
            }
        }

        // Шаблон
        $this->block_center = View::factory('v_add')->bind('errors', $errors);
    }
 

В модели
Код:
    public static function getObjValidate($post)
    {
        // тут пишем гору всяких условий
        return Validation::factory($post)
            ->label('title', 'Название')
            ->rule('title', 'not_empty');
    }

    public function saveForm($form)
    {
        if ($form->check())
        {
            DB::insert('news', array('title'))
                ->values(array($form['title']))
                ->execute();

            return true;
        }

        return $form->errors('news');
    }
 

Ну через ОРМ помойму понятнее и нагляднее

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 10:44 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
вот она моя невнимательность. вид-то я не выложила.

Код:
<form action="" method="post">
<table class="newcus">
      <tr>
         <td align="right">
        ФИО:             <input name="fio" type="text" style="width:450px"><br>
      
         <?php if(isset($errors['fio'])) echo $errors['fio']; ?>
         </td>
      </tr>
      <tr>
         <td align="right">
        Адрес:             <input name="adres" type="text" style="width:450px" value="нет">
         </td>
      </tr>
      <tr>
         <td align="right">
      Телефон(ы):        <input name="tels" type="text" style="width:450px" value="нет">
         </td>
      </tr>
      <tr>
         <td align="right">
      Доп. информация:   <input name="info" type="text" style="width:450px" value="нет">
         </td>
      </tr>
      <tr>
         <td align="right">      
        <input name="butcus" type="submit" value="Отправить" style="width:150px" height="50px"/> <br>
         </td>
      </tr>
</table>
    </form>



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 15:48 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
и прошу прощения, но почему не получается так, как это сделано в уроке? Объясненно все понятно, сделанно так же, а не работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 16:16 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
array(0) вот что мне возвращает die(Debug::vars($_POST));exit;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 16:37 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Если ошибка - какой шаблон выполняется?
Вы $errors передаете в шаблон, чтобы там что-то было?
Покажите последний код контроллера и модели (если там что-то есть)

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 16:47 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
ребята истина где-то рядом!!!
все таки что-то именно на выводе непосредственно ошибок не так.

потому что дебаг на переменную errors выдал:

array(1) (
"fio" => string(46) "Вы не ввели имя заказчика"
)



т.е. все работает, только не отображается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 16:50 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
модель
Код:
<?php defined('SYSPATH') or die('No direct script access.'); //внутряняя кухня коханы отвечающая за безопасность

    Class Model_Newcustomer extends Model {
   
    protected $_tableCustomer = 'customer';
 
    //добавление нового заказчика
 
    public function get_customer($customer_id)
    {
        $query = DB::select('fio', 'adres', 'tels', 'info')
                ->from($this->_tableCustomer)
                ->where('customer_id', '=', $customer_id)
                ->execute()
                ->as_array();
 
        if($query)
            return $query;
        else
            return array();                       
    }
 
    /**
     * Create new customer
     */
    public function create_customer($customer_id, $fio, $adres, $tels, $info)
    {
        DB::insert($this->_tableCustomer, array('customer_id', 'fio', 'adres', 'tels', 'info'))
            ->values(array($customer_id, $fio, $adres, $tels, $info))
            ->execute();                       
    }
   
   public static function unique_fio($fio)
      {
        // Проверка, существет ли уже в базе данных
      
        // указанное имnbsp;
      
        return ! DB::select(array(DB::expr('COUNT(fio)'), 'total'))
                      ->from('customer')
                      ->where('fio', '=', $fio)
                      ->execute()
                      ->get('total');
      }
   
   public function rules()
      {
    return array(
        'username' => array(
            array('not_empty'),
            array('Model_Newcustomer::unique_fio'),
                 ),           
                );
      }
   
}




контроллер
Код:
<?php defined('SYSPATH') or die('No direct script access.'); //внутряняя кухня коханы отвечающая за безопасность

class Controller_Newcustomer extends Controller_Template {

   public $template = 'basecus';   //загрузка базового вида
   
   public function action_index()
   {      
        /* if($this->request->is_initial())
            Request::initial()->redirect(URL::site('/newcustomer'));*/
       
      
        $customer_id = $this->request->param('id');
 
        $content = View::factory('newcustomerview')
                    ->bind('customers', $customers);
      
      
            if($_POST)
         {
            
            $_POST = Arr::map('trim', $_POST);   
            
            $post = Validation::factory($_POST);
            $post -> rule('fio', 'not_empty')
                  ->   rule('fio', 'Model_Newcustomer::unique_fio');      
            
         
         if($post -> check())
            {
          Model::factory('Newcustomer')->create_customer($customer_id, $_POST['fio'], $_POST['adres'], $_POST['tels'], $_POST['info']);
      
          /*   $uri = Request::detect_uri('/newcustomer');
            Request::initial()->redirect($uri);      */      
         
            }
         else
            {
            $errors = $post -> errors('customer');
            }
      
die(Debug::vars($errors));exit;
         }
   
   
        $customers = Model::factory('Newcustomer')->get_customer($customer_id);
        $this->template->content = $content;
   
   }
   
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 16:52 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Так передайте шаблону
if (isset($errors)) $this->template->errors= $errors;
или вроде того

вернее опустите
$content = View::factory('newcustomerview')
->bind('customers', $customers);

после if ($_POST) {} else {}

$content = View::factory('newcustomerview')
->bind('customers', $customers)
->bind('errors', $errors);

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 17:57 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
ура!!!!!!!!!!!!
недели курения. а всего-то надо было.
огромное вам человеческое спасибо!

и всем кто обратил внимание на мою лобуду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Валидация комментариев
СообщениеДобавлено: 18 сен 2012, 19:21 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Почему сразу лобуду? : ) Мы все через это проходили


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group