CakePHP с нуля: подправляем код, выданный генератором Bake. Часть 7 из 10

В предыдущем уроке серии мы сгенерировали приложение с помощью консоли Bake CakePHP. Сейчас мы займемся изменением приложения так, как нужно нам.

Открываем файл /app/models/category.php. CakePHP оставляет в коде закомментированные строки, назначение которых вполне очевидно. Мы изменим сообщение об ошибке проверки. Снимаем комментарии с соответствующей строки и вводим текст нашего сообщения:

var $validate = array( ‘name’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Обязательно нужно дать имя категории!’, ), ), );

Также изменяем сообщения об ошибках проверки в файле /app/models/job.php:

var $validate = array( ‘category_id’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), //’message’ => ‘Your custom message here’, ), ), ‘user_id’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), //’message’ => ‘Your custom message here’, ), ), ‘title’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Нужно ввести значение в данное поле!’ ), ), ‘body’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Нужно ввести значение в данное поле!’ ), ), ‘company’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Нужно ввести значение в данное поле!’ ), ), ‘job_type’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Нужно ввести значение в данное поле!’ ), ), );

И для модели user также меняем сообщения в файле /app/models/user.php:

var $validate = array( ‘username’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Введите имя пользователя!’, ), ), ‘pass’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Введите пароль!’, ), ‘between’ => array( ‘rule’ => array(‘between’, 5, 15), ‘message’ => ‘Длина пароля должна от 5 до 15 символов’ ) ), ‘name’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Необходимо ввести имя!’, ), ), ’email’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Необходимо ввести адрес email’, ), ’email’ => array( ‘rule’ => array(’email’, true), ‘message’ => ‘Введите корректный адрес email!’ ) ), );

Здесь используются дополнительные проверки для пароля и поля ввода адреса email. Для адреса email используется проверка его корректности. Передача в качестве второго аргумента логического значения true, указывает функции на необходимость проверки хоста адреса.

Добавим некоторые изменения в нашу модель. Поле для ввода пароля является простым полем для ввода текста. Внесем здесь изменения. Открываем файл/app/views/users/add.php и изменяем код:

echo $this->Form->input(‘username’); echo $this->Form->input(‘pass’, array(‘type’ => ‘password’)); echo $this->Form->input(‘pass2’, array(‘type’ => ‘password’, ‘label’ => ‘Повторите пароль’)); echo $this->Form->input(‘name’); echo $this->Form->input(‘location’); echo $this->Form->input(‘address’); echo $this->Form->input(’email’); echo $this->Form->input(‘web’);

Мы добавили тип для поля пароля, а также ввели новое дополнительное поле: ‘Повторите пароль’. Используем распространенную практику предохранения пользователя от ошибок при вводе пароля.

Теперь надо добавить новый функционал в наше приложение. Открываем файл /app/models/user.php и добавляем правило:

‘pass2’ => array( ‘notempty’ => array( ‘rule’ => array(‘notempty’), ‘message’ => ‘Необходимо подтвердить ваш пароль!’, ), ‘custom’ => array( ‘rule’ => array(‘CheckPasswordMatch’), ‘message’ => ‘При повторении пароль не совпадает!’, ), ),

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

function CheckPasswordMatch($data) { return $this->data[‘User’][‘pass’] == $this->data[‘User’][‘pass2’]; }

Функция просто выполняет проверку на соответствие значений в двух полях.

Также нужно изменить маршрутизацию, чтобы пользователь мог обращаться к нашему приложению простым введением адреса проекта (без указания конкретного контроллера в адресе URL). Изменение маршрутизации было описано в 4 уроке серии. Лучше всего использовать контроллер для вакансий.

Для перевода интерфейса на русский язык придется поработать с файлами видов .ctp. По своей сути они являются HTML страницами с вкраплениями PHP кода. Для вывода надписей над полями ввода нужно будет использовать параметр label,  как мы сделали при добавлении поля для повторного ввода пароля. Надписи для перевода достаточно просто определяются. Нужно проработать все виды для всех трех моделей (users, jobs и categories).

 

В следующем уроке будет разбираться тема шаблонов для CakePHP (изменение, добавление стилей и прочее).

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/-R-cqZRjCPw/lessons.php

Источник: lred.ru

Оцените статью
новости для мужчин