From 8609d3110e2bd6f9a66ab9922a8be21fedef154b Mon Sep 17 00:00:00 2001 From: andryeyev Date: Tue, 10 Nov 2015 23:06:21 +0200 Subject: [PATCH] Парсинг url и подгрузка страниц без всякой регулярки --- db-migration/artbox_db.sql | 64 ++++++++++++++++++++++++++++++++++++++++++++++------------------ frontend/controllers/PageController.php | 4 ++-- frontend/controllers/SiteController.php | 44 +++++++++++++++++++++++++++++++------------- 3 files changed, 79 insertions(+), 33 deletions(-) diff --git a/db-migration/artbox_db.sql b/db-migration/artbox_db.sql index a82dc19..f3e872d 100644 --- a/db-migration/artbox_db.sql +++ b/db-migration/artbox_db.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- Хост: 127.0.0.1:3306 --- Час створення: Лис 09 2015 р., 20:55 +-- Час створення: Лис 11 2015 р., 00:03 -- Версія сервера: 5.5.45 -- Версія PHP: 5.6.12 @@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS `controller` ( `controller_id` int(3) NOT NULL AUTO_INCREMENT, `controller_name` varchar(50) NOT NULL, PRIMARY KEY (`controller_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; -- -- Дамп даних таблиці `controller` @@ -39,7 +39,9 @@ CREATE TABLE IF NOT EXISTS `controller` ( INSERT INTO `controller` (`controller_id`, `controller_name`) VALUES (1, 'Page'), (2, 'Home'), -(3, 'Catlog'); +(3, 'Catlog'), +(4, 'News'), +(5, 'Filter'); -- -------------------------------------------------------- @@ -282,19 +284,19 @@ CREATE TABLE IF NOT EXISTS `page_lang` ( -- INSERT INTO `page_lang` (`page_id`, `page_title`, `meta_title`, `meta_description`, `text`, `page_alias`, `lang_id`) VALUES -(1, 'Главная страница', '', '', '', '/', 2), -(2, 'О компании', '', '', '', 'about', 2), -(3, 'Условия использования', '', '', '', 'use', 2), -(4, 'Условия сотрудничества', '', '', '', 'corporation', 2), -(5, 'Контакты', '', '', '', 'contacts', 2), -(6, 'Магазины', '', '', '', 'shops', 2), -(7, 'Поставщики', '', '', '', 'vendors', 2), -(8, 'Каталог товаров', '', '', '', 'catalog', 2), -(9, 'Оплата', '', '', '', 'payment', 2), -(10, 'Доставка', '', '', '', 'delivery', 2), -(11, 'Гарантия', '', '', '', 'warranty', 2), -(12, 'Акции', '', '', '', 'promotion', 2), -(13, 'Новости', '', '', '', 'news', 2); +(1, 'Главная страница', 'Главная страница | ukrseeds.net.ua', '', '', '/', 2), +(2, 'О компании', 'О компании | ukrseeds.net.ua', '', 'На протяжении уже нескольких лет, наша компания производит заготовку и выращивание на договорной основе семян овощных и цветочных культур в Украине, а также ведет тесное сотрудничество с ведущими европейскими семенными компаниями. Перед тем как поступить в продажу, продукция проходит проверку в нашей лаборатории и Государственной семенной инспекции, что подтверждается сертификатом и гарантирует качество семян согласно ГОСТу Украины. ', 'about', 2), +(3, 'Условия использования', 'Условия использования | ukrseeds.net.ua', '', '', 'use', 2), +(4, 'Условия сотрудничества', 'Условия сотрудничества | ukrseeds.net.ua', '', '', 'corporation', 2), +(5, 'Контакты', 'Контакты | ukrseeds.net.ua', '', 'Головной офис:
\r\nг. Киев-04128, ул. Стеценка, 35,
\r\nт/ф: /044/ 503-7827, e-mail: ukrseeds@gmail.com
\r\nFacebook
\r\n
\r\nМелкооптовая продажа:
\r\nг. Киев, бульвар Академика Вернадского, 14А,
\r\nтел.: /044/ 450-7932, факс: /044/ 452-6497,
\r\ne-mail: 4507932@gmail.com
', 'contacts', 2), +(6, 'Магазины', 'Магазины | ukrseeds.net.ua', '', '', 'shops', 2), +(7, 'Поставщики', 'Поставщики | ukrseeds.net.ua', '', 'На сегодняшний день, благодаря динамическому развитию дилерской сети, наша продукция представлена во многих регионах Украины, и уже многие имели возможность удостовериться в качестве наших семян.\nС уважением,\nдиректор ТМ "Семена Украины"', 'vendors', 2), +(8, 'Каталог товаров', 'Каталог товаров | ukrseeds.net.ua', '', '', 'catalog', 2), +(9, 'Оплата', 'Оплата | ukrseeds.net.ua', '', '', 'payment', 2), +(10, 'Доставка', 'Доставка | ukrseeds.net.ua', '', '', 'delivery', 2), +(11, 'Гарантия', 'Гарантия | ukrseeds.net.ua', '', '', 'warranty', 2), +(12, 'Акции', 'Акции | ukrseeds.net.ua', '', '', 'promotion', 2), +(13, 'Новости', 'Новости | ukrseeds.net.ua', '', '', 'news', 2); -- -------------------------------------------------------- @@ -409,8 +411,8 @@ INSERT INTO `template` (`template_id`, `controller_id`, `template_name`, `templa (1, 1, 'page', 'page/page'), (2, 2, 'home', 'page/home'), (3, 3, 'catalog', 'shop/catalog'), -(4, 0, 'filter', 'shop/filter'), -(5, 0, 'news', 'news/all'); +(4, 5, 'filter', 'shop/filter'), +(5, 4, 'news', 'news/all'); -- -------------------------------------------------------- @@ -556,6 +558,32 @@ CREATE TABLE IF NOT EXISTS `termin_relation` ( -- -------------------------------------------------------- -- +-- Структура таблиці `translate` +-- + +CREATE TABLE IF NOT EXISTS `translate` ( + `translate_id` int(6) NOT NULL AUTO_INCREMENT, + `translate_key` varchar(20) NOT NULL, + PRIMARY KEY (`translate_id`), + UNIQUE KEY `translate_key` (`translate_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблиці `translate_lang` +-- + +CREATE TABLE IF NOT EXISTS `translate_lang` ( + `translate_id` int(6) NOT NULL, + `translate_value` varchar(3000) NOT NULL, + `lang_id` int(2) NOT NULL, + PRIMARY KEY (`translate_id`,`lang_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- -- Структура таблиці `user` -- diff --git a/frontend/controllers/PageController.php b/frontend/controllers/PageController.php index 8949733..23c5103 100644 --- a/frontend/controllers/PageController.php +++ b/frontend/controllers/PageController.php @@ -15,7 +15,7 @@ class PageController extends Controller * * @return mixed */ - public function actionPage($page_id, $template_file) + public function actionPage($controller_name, $page_id, $template_file) { // страница $page = Page::getPageById ($page_id); @@ -29,7 +29,7 @@ class PageController extends Controller 'content' => $page['meta_description'], ]); - return $this->render('page', $page); + return $this->render($controller_name, $page); } } \ No newline at end of file diff --git a/frontend/controllers/SiteController.php b/frontend/controllers/SiteController.php index e602f50..59187f9 100644 --- a/frontend/controllers/SiteController.php +++ b/frontend/controllers/SiteController.php @@ -55,7 +55,8 @@ class SiteController extends Controller * @inheritdoc */ public function actions() - { + { + // по умолчанию - 404 return [ 'error' => [ @@ -74,21 +75,28 @@ class SiteController extends Controller * @return mixed */ public function actionIndex() - { + { // парсим URL, находим контроллер и подключаем view-файл - - if ($page = Page::getPageByUrl ('about')) - { - if (Page::isShow ($page) - && $page['template_file'] != NULL - && is_file (yii::$app->viewPath.'/'.$page['template_file'].'.php')) - { + if (($url = substr(yii::$app->request->url, 1)) == '') + { + $url = '/'; + } + + if ($page = Page::getPageByUrl ($url)) + { + if (Page::isShow ($page) + && $page['template_file'] != NULL + && is_file (yii::$app->viewPath.'/'.$page['template_file'].'.php')) + { return Yii::$app->runAction($page['template_file'], [ + 'controller_name' => $page['controller_name'], 'page_id' => $page['page_id'], 'template_file' => $page['template_file'], ]); } - } + } + + return $this->render('index'); } /** @@ -96,6 +104,7 @@ class SiteController extends Controller * * @return mixed */ +/* public function actionLogin() { if (!\Yii::$app->user->isGuest) { @@ -111,24 +120,26 @@ class SiteController extends Controller ]); } } - +*/ /** * Logs out the current user. * * @return mixed */ +/* public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } - +*/ /** * Displays contact page. * * @return mixed */ +/* public function actionContact() { $model = new ContactForm(); @@ -146,6 +157,7 @@ class SiteController extends Controller ]); } } +*/ /** * Displays about page. @@ -162,6 +174,7 @@ class SiteController extends Controller * * @return mixed */ +/* public function actionSignup() { $model = new SignupForm(); @@ -177,12 +190,14 @@ class SiteController extends Controller 'model' => $model, ]); } - +*/ + /** * Requests password reset. * * @return mixed */ +/* public function actionRequestPasswordReset() { $model = new PasswordResetRequestForm(); @@ -200,6 +215,7 @@ class SiteController extends Controller 'model' => $model, ]); } +*/ /** * Resets password. @@ -208,6 +224,7 @@ class SiteController extends Controller * @return mixed * @throws BadRequestHttpException */ +/* public function actionResetPassword($token) { try { @@ -226,4 +243,5 @@ class SiteController extends Controller 'model' => $model, ]); } +*/ } -- libgit2 0.21.4