Ази роботи з Zend Framework (2

Доброї доби всім гостям сайту ruseller.com. Сьогодні ми продовжимо наш практичний екскурс в один із найпродвинутіших і найпопулярніших PHP фреймворків – Zend Framework. У сьогоднішньому уроці ми реалізуємо простий Zend додаток, а саме: створимо layout, навчимося взаємодіяти з моделями (Базами даних), формами та іншими фічами.

В першу чергу, я хотів би нагадати вам, що ми створюємо простий Zend додаток для створення картотеки наших улюблених фільмів. Для того, щоб ви добре орієнтувалися в даному уроці, пропоную вам ознайомитись з першою частиною нашої серії уроків – «Ази роботи з Zend Framework (1/3) – Встановлення та створення проекту».

Отже, на даний момент у вас має бути створений Zend Framework додаток, що складається з одного контролера – Index, та чотирьох action – index, add, edit, delete.

Створення бази даних та таблиці

Для того, щоб нам було з чим працювати, створимо таблицю та заповнимо її інформацією:

Для підключення до бази даних ви зазвичай користувалися файлом db.php або щось на зразок цього. У Zend Framework для цього існує окремий файл - application.ini, який знаходиться в каталозі вашого проекту zfdemo\application\configs\application.ini. Перейдіть у сегмент development ([development : production]) і вставте наступний код:

PDO_MYSQL – це адаптер, який ми будемо використовувати для роботи з базами даних. Якщо ви коли-небудь працювали з базами даних, наступні параметри будуть вам знайомі.

Тепер для того, щоб взаємодіяти з новоствореною таблицею, нам необхідно створити модель. Зробимо ми це за допомогою Zend Tool (установка та налаштування даного інструменту докладно описано у колишній статті).Відкрийте консоль або командний рядок. Перейдіть до каталогу вашого проекту (обов'язково). Тепер наберіть команду:

Після того як ви виконаєте цю операцію, у вас буде створено новий каталог (application/models/DbTable) та файл Movies.php. Відкрийте цей файл і заповніть його таким вмістом:

Ми тільки-но створили модель з дуже довгою назвою Application_Model_DbTable_Movies. Таке найменування необхідне згідно з правилами побудови проекту. Справа в тому, що коли ми створюватимемо об'єкт даної моделі, Zend Framework повинен визначити який файл йому підключити. Ця назва класу говорить про те, що модель знаходиться в каталозі application/models/db-table, а модель називається Movies.php. Таким чином, Zend Framework автоматично підключить цю модель.

Якщо ви звернули увагу, наша модель успадковується від класу Zend_Db_Table_Abstract. Завдяки цьому спадкуванню ми можемо користуватися методами insert(), update(), delete(), fetchRow(), fetchAll() та багатьма іншими.

Тепер, коли все необхідне для роботи з базою даних готове, приступимо до створення layout.

Створення Layout

Як ви вже зрозуміли з першої статті, кожен контролер має серію своїх action, кожен з яких у свою чергу має свій view. Якщо ви відкриєте якийсь view, припустимо application\views\scripts\index\edit.phtml, то не побачите ні doctype, ні meta тегів ... Ви запитаєте: "Що мені в кожному файлі писати doctype?". Відповідь – звичайно ж ні! Для цього у Zend Framework існує Layout.

Відкрийте консоль або командний рядок і перейдіть до каталогу вашого проекту. Щоб створити layout, наберіть наступну команду:

Після виконання цієї команди у вашому application.ini з'явиться новий рядок:

Нижче цього рядкадодайте наступний запис, який повідомить додаток який використовувати doctype:

Для того, щоб повністю покінчити з оформленням, у каталозі public створіть папку css та файл site.css:

Створення форми

Для того щоб вставляти інформацію до бази даних, нам необхідно створити форму, через яку користувач буде вносити свої дані. Відкрийте командний рядок, перейдіть до каталогу вашого проекту та наберіть наступну команду:

Завдяки спадкуванню від Zend_Form ми маємо можливість створювати потужні та безпечні форми.

Zend Framework містить класи всіх елементів форм HTML. У цьому фрагменті коду ми створили 4 елементи форми. Одне приховане, 2 текстові поля та кнопку submit.

Тепер я хотів би докладніше зупинитися на створенні одного з текстових полів, а саме на фрагменті:

Якщо ви приписали одному елементу кілька валідаторів, то вам знадобиться другий параметр методу addValidator. Якщо цей параметр дорівнює true, то це означає, що якщо валідація не вдалася, подальші перевірки щодо даного елемента проводитися не будуть.

Третій параметр – це повідомлення про помилки валідації. Там ми повинні вказати ключ помилки та написати повідомлення. Цього можна і не робити, але тоді повідомлення виводитимуться англійською мовою.

Тепер, коли всі підготовчі роботи завершені, ми можемо розпочати реалізацію наших action-view.

Реалізація CRUD

Виводимо список фільмів

Відкрийте контролер IndexController, який знаходиться в каталозі application/controllers та вставте наступний метод:

У цьому фрагменті ми отримали всі наші улюблені фільми і передали їх у view, в якому звертатимемося до них за змінною $this->movies. Відкрийте файл index.phtml, який знаходиться укаталозі application\views\scripts\index і вставте наступний код:

У цьому фрагменті використовуємо метод escape як фільтр. Тепер, якщо ви зробили все правильно, на сторінці www.zfdemo.web/index/index ви повинні побачити список фільмів.

Створення нового фільму

Відкрийте IndexController та вставте ще один метод:

Спочатку ми створюємо об'єкт форми та передаємо її у view. Далі слідує код, який перевіряє валідність заповненої форми. Якщо користувач ввів все правильно, відбувається вставка в базу. Якщо ні, то користувачеві буде можливість виправити помилки. Відкрийте файл add.phtml. Додайте наступний код:

Редагування фільму

Додайте наступний код до IndexController:

Цей фрагмент мало відрізняється від попереднього. Відмінності лише наприкінці. Щоб заповнити форму текстом, ми отримуємо її з допомогою написаного нами методу getMovie(). Відкрийте файл edit.phtml та вставте код:

Видалення фільму

Відкрийте IndexController для додавання останнього методу:

У цьому файлі ми виводимо форму, щоб користувач підтвердив своє бажання видалити запис.

Висновок

У цьому уроці ви познайомилися зі створенням layout, форм та моделей. Тепер у вас має скластися більш ясне враження про те, як створювати програми на Zend Framework. Наступного тижня я покажу вам, як створити аутентифікацію засобами Zend.