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
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Чтобы вырастить плодоносящий сайт - его полезно регулярно поливать и удобрять с помощью рекламы и оптимизации Компания "RedLine" |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.