OpenCart — від новачка до професіонала: детальніше про MVC

287

Від автора: раніше ми почали розглядати архітектуру OpenCart Модель-Представлення-Контролер — або MVC. У зв’язку з цим ми створили наш перший Контролер OpenCart «Hello World!». В попередній статті я тільки в загальному розповів про це. Сподіваюся, ви спробували самостійно створювати контролери, так як зараз ми розглянемо це питання більш предметно. Але спочатку давайте подивимося, про що піде мова в цій статті.

Написання реального Контролера

Завантаження мов

Завантаження та використання бібліотек

Чит-лист бібліотек

OpenCart — від новачка до професіонала: детальніше про MVC

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Створення Подання

Створення Моделі

Управління Моделлю за допомогою Контролера

Висновок

Написання реального Контролера

З допомогою OpenCart MVC Framework ми створимо просту форму. Для цього потрібно спочатку створити Контролер. До цього я вже створив папку форми catalog/controller. Примітка. Користувачі Mac і Linux — не забудьте змінити права доступу для каталогу на 775. Всередині каталогу forms я створив файл myform.php. Тепер давайте додамо в нього код:

document->settitle(‘My Form’); // Для встановлення Тайтла сторінки
$this->data[‘breadcrumbs’] = array(); // Ініціалізуємо масив Хлібних крихт
$route = $this->request->get[‘route’]; // Отримуємо “маршрут” URL-адреси, використовуючи метод GET
// Створюємо Хлібні крихти, пов’язані з головною сторінкою
$this->data[‘breadcrumbs’][] = array(
‘text’ => ‘Home’,
‘href’ => $this->url->link(‘common/home’), // шлях маршруту на головну сторінку
‘separator’ => false
);
// Прив’язуємо поточну сторінку до хлібним крихтам
$this->data[‘breadcrumbs’][] = array(
‘text’ => ‘My Form’,
‘href’ => $this->url->link($route), // шлях маршруту до поточного url
‘separator’ => ‘| ‘ //Символ роздільника для Хлібних крихт
);
//Кінець Хлібних крихт
$this->data[‘form_heading’] = ‘My Form Heading’; // Використовуємо ключове слово $this->data для обробки даних контролера для подання
$this->data[‘first_value’] = ‘Firstname: ‘;
$this->data[‘second_value’] = ‘Lastname: ‘;
$this->data[‘third_value’] = ‘Passport No.: ‘;
$this->data[‘forth_value’] = ‘Phone No.: ‘;
$this->data[‘continue’] = $this->url->link(‘common/home’); // Дані посилання для кнопки “Далі”
$this->data[‘button_continue’] = ‘Continue’; // Текст посилання для кнопки “Далі”
// Додаємо дочірні елементи Сторінки: шапку, футер, стовпці
$this->children = array(
‘common/column_left’,
‘common/column_right’,
‘common/content_top’,
‘common/content_bottom’,
‘common/footer’,
‘common/header’
);
$this->template = ‘default/template/forms/myform.tpl’; //Прив’язуємо файл шаблону / подання для Користувача інтерфейсу
$this->response->setoutput($this->render()); // Відображаємо Шаблон
}
}
?>

Перегляньте цей код і спробуйте створити такий контролер.

Завантаження мов

OpenCart дозволяє легко працювати з мовами. У наведеному вище прикладі використовувалися жорстко закодовані тексти мов. Але рекомендується використовувати текстові оператори.

OpenCart — від новачка до професіонала: детальніше про MVC

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Щоб завантажити мову, використовуйте $this->language->load(маршрут шляху до мови);, а для отримання даних конкретної мови використовується такий синтаксис $this->language->get(ключове слово даних мовного файлу);.

Зверніть увагу — настійно рекомендується створювати мовний файл для кожного контролера і сторінки. Шлях до мови має бути таким же, як для контролера.

Завантаження та використання бібліотек

Для зручності розробників платформа містить кілька попередньо встановлених бібліотек. Вони можуть розташовуватися в каталозі /system/library. Бібліотеки можна завантажувати безпосередньо в контролер з допомогою синтаксису: $this->library_name->method_name().

Раніше ми розглянули кілька бібліотек, тому ви можете працювати з ними за допомогою свого коду. Деякі чит-лист доступні наступним чином:

Бібліотека Кошика

$this->cart->getProducts(); //Отримує всі товари, доступні в Кошику
$this->cart->add( $product_id, $qty = 1, $options = array()); // Додати товар у Кошик
$this->cart->remove( $key ); // Видалити товар з Кошика
$this->cart->clear(); // Очистити Кошик
$this->cart->getWeight(); // Повертає суму товарів у кошику
$this->cart->getSubTotal(); // Повертає попередню суму по всіх товарів у кошику
$this->cart->getTotal() ; // Повертає повну суму по всіх товарів у Кошику
$this->cart->countProducts() ; // Повертає кількість товарів, доступних в Кошику
$this->cart->hasProducts(); // Повертає true, якщо в Кошику доступний хоча б один товар
$this->cart->hasStock(); // Повертає false, якщо жодного товару немає в наявності

Бібліотеки Конфігурації

$this->config->get($key); //Повертає по ключовому слову налаштування, виходячи з програми (каталог або панель адміністрування)
$this->config->set($key, $value); // Встановлює і перепризначає значення параметра. (Не зберігає його в базі даних)
CURRENCY
$this->currency->set($currency); // Встановлює і перепризначає код валюти за замовчуванням, яка використовується в Сесії
$this->currency->format($number, $currency = “, $value = “, $format = TRUE); // Задає формат Валюти
$this->currency->convert($value, $from, $to); // Конвертує значення валюти в іншу валюту
$this->currency->getId(); // Отримує ідентифікатор поточної валюти
$this->currency->getCode() ; // Повертає код валюти для поточної валюти
$this->currency->getValue($currency); // Повертає курс обміну для наданої валюти
$this->currency->has(currency); // Повертає true, якщо доступний список валют

Бібліотека Клієнтів

$this->customer->login($email, $password); // Вхід в профіль Клієнта
$this->customer->logout); // Вихід з профілю Клієнта
$this->customer->isLogged(); // Повертає true, якщо авторизований Користувач
$this->customer->getId(); //Повертає ідентифікатор поточного авторизованого користувача
$this->customer->getFirstName() // Повертає Ім’я поточного авторизованого користувача
$this->customer->getLastName() // Повертає Прізвище поточного авторизованого користувача
$this->customer->getEmail() ; // Повертає адресу електронної пошти поточного авторизованого користувача
$this->customer->getTelephone() ; // Повертає Телефон Активного користувача
$this->customer->getFax() ; // Повертає Номер факсу Активного користувача
$this->customer->getNewsletter() ; // Повертає статус підписки на електронну розсилку
$this->customer->getCustomerGroupId() ; // Повертає ідентифікатор Групи Активного користувача

Бібліотека бази даних

$this->db->query($sql) // Виконує запит MySQL і повертає кількість рядків
$this->db->escape($value); // Очищає Значення і робить його безпечним для використання в базі даних
$this->db->getLastId($sql); //Повертає останній доданий ідентифікатор останнього запиту

Бібліотека документів

$this->document->setTitle($title); //Встановлює Тайтл сторінки
$this->document->getTitle(); // Отримує Тайтл сторінки
$this->document->setDescription($description); // Встановлює Дескрипшен сторінки
$this->document->getDescription(); // Отримує Дескрипшен сторінки
$this->document->setKeywords(); // Встановлює ключові слова сторінки
$this->document->getKeywords(); // Отримує ключові слова сторінки
$this->document->addStyle( $href $rel = ‘stylesheet’, $media = ‘screen’ ); // вставляє в документ таблицю стилів
$this->document->getStyles(); // Отримує стилі сторінки
$this->document->addScript( $script ); // Додає документ скрипти
$this->document->getScripts(); // Отримує скрипти сторінки

Створення подання

В OpenCart доступні шаблони, які використовуються для вистав. У наведеному вище контролері ми вказали розташування файлу представлення теми theme/default/template/forms/myform.tpl. Тепер створіть файл з таким іменем і помістіть в нього наступний код:

Створення Моделі

Модель підтримує взаємодію з базою даних та її об’єктами. Тому, перш ніж починати роботу з моделлю, перейдіть в phpMyAdmin, виберіть базу даних свого магазину (тобто storedb) і виконайте наступні інструкції в панелі SQL.

CREATE TABLE `oc_myforms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_value` varchar(80) DEFAULT NULL,
`second_value` varchar(80) DEFAULT NULL,
`third_value` varchar(80) DEFAULT NULL,
`forth_value` varchar(80) DEFAULT NULL,
`date_added` datetime DEFAULT ‘0000-00-00 00:00:00’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

«oc» — це префікс таблиці, використовуйте власний префікс бази даних. Тепер настав час створити власну модель. Мета створення моделі — збереження даних у базі даних. Тому давайте створимо нашу першу модель. Створіть у папці catalog/model/forms/ файл myforms.php і помістіть в нього наступний код:

db->query(“INSERT INTO” . DB_PREFIX . “myforms SET first_value='”.$this->db->escape($data_array[‘first_value’]).”‘ ,second_value='”.$this->db->escape($data_array[‘second_value’]).”‘,third_value='”.$this->db->escape($data_array[‘third_value’]).”‘,forth_value='”.$this->db->escape($data_array[‘forth_value’]).”‘,date_added=NOW() “);
$form_id = $this->db->getLastId(); // Returns last inserted id
return $form_id;
}
}
?>

Управління Моделлю за допомогою Контролера

Таким чином, остаточний код контролера буде виглядати так:

request->server[‘REQUEST_METHOD’] == ‘POST’)) {
$this->load->model(‘forms/myform’); //маршрут шляху без .php
$form_id = $this->model_forms_myform->saveData($this->request->post); //Parse all the posted data
if($form_id)
{
$this->redirect($this->url->link(‘forms/myform’)); //Знову перезавантажуємо форму
}
}
$this->document->settitle(‘My Form’); // Для встановлення Тайтла сторінки
$this->data[‘breadcrumbs’] = array(); // Ініціалізуємо масив Хлібних крихт
$route = $this->request->get[‘route’]; // Отримуємо “маршрут” URL-адреси, використовуючи метод GET
// Створюємо Хлібні крихти, пов’язані з головною сторінкою
$this->data[‘breadcrumbs’][] = array(
‘text’ => ‘Home’,
‘href’ => $this->url->link(‘common/home’), // шлях маршруту на головну сторінку
‘separator’ => false
);
// Прив’язуємо поточну сторінку до хлібним крихтам
$this->data[‘breadcrumbs’][] = array(
‘text’ => ‘My Form’,
‘href’ => $this->url->link($route), // шлях маршруту до поточного url
‘separator’ => ‘| ‘ //Символ роздільника для Хлібних крихт
);
//Кінець Хлібних крихт
$this->data[‘form_heading’] = ‘My Form Heading’; // Використовуємо ключове слово $this->data для обробки даних контролера для подання
$this->data[‘first_value’] = ‘Firstname: ‘;
$this->data[‘second_value’] = ‘Lastname: ‘;
$this->data[‘third_value’] = ‘Passport No.: ‘;
$this->data[‘forth_value’] = ‘Phone No.: ‘;
$this->data[‘continue’] = $this->url->link(‘common/home’); // Дані посилання для кнопки “Далі”
$this->data[‘button_continue’] = ‘Continue’; // Текст посилання для кнопки “Далі”
// Додаємо дочірні елементи для Pages: шапку, футер, столцы
$this->children = array(
‘common/column_left’,
‘common/column_right’,
‘common/content_top’,
‘common/content_bottom’,
‘common/footer’,
‘common/header’
);
$this->template = ‘default/template/forms/myform.tpl’; //Прив’язуємо файл шаблону / подання для Користувача інтерфейсу
$this->response->setoutput($this->render()); // Відображаємо Шаблон
}
}
?>

Таким чином, умовний оператор буде перевіряти, чи існують які-небудь дані, що передаються з методу POST. Якщо так, то буде відбуватися їх запис у базу даних. Зверніть увагу, що ви можете додати власну валідацію для даних POST.

Висновок

Бінго! Ми створили реальне додаток Модель-Представлення-Контролер для OpenCart. Ви можете продовжити вивчення MVC; однак метою даної статті було дати вам загальне уявлення, і ми цієї мети досягли. У наступних статтях ми розглянемо створення модулів і бібліотек OpenCart. Будь ласка, напишіть в коментарях, якщо у вас виникли які-небудь питання.

OpenCart — від новачка до професіонала: детальніше про MVC

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення