Додавання функціональності
Отже, поки наш адміністраторський розділ не дуже корисний. Поки він не робить нічого, крім відображень вмісту бази даних.
Для додавання корисних функцій необхідно додати кілька кнопок і посилань.
Панель інструментів
Можливо, ви звернули увагу на панель інструментів, що відображається вгорі панелей адміністратора компонент Joomla. Нашому компоненту вона також необхідна. Joomla полегшує її створення. Додамо кнопки Вилучити заголовки, Змінити записи, і Створити нові записи. Також додамо заголовок, який буде відображатися на нашій панелі інструментів.
Це можна зробити, додавши трохи коду в уявлення. Щоб додати кнопки, використовуємо статичні методи з класу JToolBarHelper. Код виглядає так:
Ці три методи створюють відповідні кнопки. Метод deleteList () може приймати три параметра: перший параметр є рядком, запитуючої користувача про підтвердження видалення. Другий параметр є завданням, яка відправляється разом із запитом (за замовчуванням "remove"), а третій - текст, який відображається під кнопкою.
Методи editListX () і addNewX () можуть отримувати два додаткові параметри. Перший - завдання (за замовчуванням - відповідно, edit і add), другий - текст, який відображається під кнопкою.
* Можливо, ви звернули увагу на використання методу JText :: _ як в минулому шаблоні, так і тут. Це функція, значно полегшує переклад компонента. Метод JText :: _ шукає текстову рядок в мовному файлі компонента і повертає перекладену рядок. Якщо переклад не знайдений, функція повертає рядок, передану їй. Якщо компонент потрібно перевести на іншу мову, все, що потрібно зробити - створити мовний файл, що включає рядки і їх переклад на потрібну мову.
Прапорці та посилання
Тепер у нас є кнопки. Дві з цих кнопок керують існуючими записами. Але як дізнатися, з якими саме записами необхідно працювати? Нехай це визначить користувач. Для цього нам потрібно додати прапорці в таблицю, щоб користувач міг вибрати необхідні записи. Це реалізовано в нашому шаблоні.
Для додавання прапорців нам необхідно додати в таблицю додатковий стовпець. Ми додамо стовпець між двома наявними.
У заголовку стовпця додамо прапорець, який можна використовувати для вибору або скидання всіх прапорців:
Тепер необхідно додати прапорці в кожен рядок. У класу JHTML є метод JHTML :: _ (), який створить для нас прапорці. Додамо наступні рядки в наш цикл:
Потім додамо клітинку між двома наявними:
Необхідність вибирати прапорець, переміщатися вгору сторінки і натискати кнопку надто обтяжлива. Ми додамо посилання, що дозволяє перейти безпосередньо до форми редагування. Наступні рядки додамо після виклику методу JHTML :: _ () для створення посилання HTML:
Додаємо посилання в клітинку, відображаючи текст:
Ось повний код файлу default.php:
Тепер наше уявлення hellos закінчено. Можна відчувати компонент, щоб побачити результати.
Тепер, коли уявлення Hellos завершено, час звернути увагу на уявлення і модель Hello. Справжня робота виконується саме тут.
контролер Hello
Єдиною роботою контролера за замовчуванням є відображення уявлень.
Ви повинні мати можливість виконувати завдання, що запускаються з уявлення Hellos: додавати, змінювати і видаляти.
Фактично, додавання і зміна є одним і тим же завданням: вони обидва відображають користувачеві форму, що дозволяє редагувати вітання. Єдина різниця в тому, що при створенні відображається порожня форма, а при зміні - форма з даними. Оскільки вони є схожими, ми будемо виконувати завдання додавання за допомогою процесора завдання зміни. Це вказується в нашому конструкторі:
Перший параметр JController :: registerTask є завданням, другий - метод її виконання
Почнемо з обробки завдання зміни. У цьому випадку робота контролера проста. Все, що йому потрібно - вказати уявлення і макет для завантаження (в нашому випадку подання hello і макет форми). Ми також вкажемо Joomla відключити головне меню під час зміни вітання. Це запобігає залишення відкритих незбережених записів.
Наш обробник завдання зміни виглядає наступним чином:
подання Hello
Подання Hello відображає форму, що дозволяє користувачеві редагувати вітання. Метод display повинен виконувати кілька простих операцій:
- отримати дані з моделі
- створити панель інструментів / div>
- помістити дані в шаблон
- викликати метод display () для відтворення шаблону
Це трохи складніше, тому що одне подання виконує як редагування, так і додавання. Наша панель інструментів повинна повідомляти користувачу про виконуваної в даний момент операції - додавання це або редагування, тобто потрібно визначити виконувану задачу.
Коли ми отримуємо запис для відображення з моделі, ми можемо використовувати ці дані для визначення поточного завдання. Якщо завданням є редагування, значить, поле id записи було змінено. Якщо це нова задача, значить, його значення не буде встановлено. Ця деталь може допомогти визначити, чи створюється новий запис, або редагується існуюча.
Також додамо на панель інструментів дві кнопки: save і cancel. Функціональність буде практично однаковою, але в залежності від поточного завдання відображатися будуть різні кнопки. У разі нового запису буде відображатися кнопка cancel, а в разі зміни існуючої - кнопка close.
Отже, метод display буде виглядати так:
модель Hello
Для нашого уявлення необхідні дані. Це означає, що потрібно створити відповідну модель.
У нашій моделі будуть дві властивості: _id і _data. _id буде зберігати ідентифікатор вітання, data - дані.
Почнемо з конструктора, який отримує id із запиту:
Метод JRequest :: getVar () використовується для отримання даних із запиту. Першим параметром є ім'я змінної форми. Другий параметр - значення за замовчуванням для присвоєння в разі, якщо значення, не знайдено. Третій параметр - це ім'я хеша для отримання значення з get, post, і т.д. і останнє значення - тип даних, який слід встановити для значення.
Конструктор отримає перше значення з масиву cid і привласнить його id.
Метод setId () може використовуватися для установки id. Зміна id, на який вказує наша модель, означає, що points вказує на неправильні дані. Отже, встановлюючи значення id, ми очищаємо властивість data:
Нарешті, нам потрібен метод для отримання data: getData ()
getData перевірить, чи встановлено значення властивості _data. Якщо так, він просто поверне його. В іншому випадку будуть отримані дані з бази даних.
Нарешті, все що нам залишилося - створити форму для даних. Оскільки ми визначили макет як форму, форма буде розміщена в файлі каталогу tmpl уявлення hello під ім'ям form.php:
Зверніть увагу: на додаток до поля введення присутній приховане поле для id. Користувач не повинен змінювати id, тому ми просто непомітно поміщаємо його в форму.