Commit 8609d3110e2bd6f9a66ab9922a8be21fedef154b

Authored by andryeyev
1 parent 703388f5

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

db-migration/artbox_db.sql
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 -- http://www.phpmyadmin.net 3 -- http://www.phpmyadmin.net
4 -- 4 --
5 -- Хост: 127.0.0.1:3306 5 -- Хост: 127.0.0.1:3306
6 --- Час створення: Лис 09 2015 р., 20:55 6 +-- Час створення: Лис 11 2015 р., 00:03
7 -- Версія сервера: 5.5.45 7 -- Версія сервера: 5.5.45
8 -- Версія PHP: 5.6.12 8 -- Версія PHP: 5.6.12
9 9
@@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS `controller` ( @@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS `controller` (
30 `controller_id` int(3) NOT NULL AUTO_INCREMENT, 30 `controller_id` int(3) NOT NULL AUTO_INCREMENT,
31 `controller_name` varchar(50) NOT NULL, 31 `controller_name` varchar(50) NOT NULL,
32 PRIMARY KEY (`controller_id`) 32 PRIMARY KEY (`controller_id`)
33 -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 33 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
34 34
35 -- 35 --
36 -- Дамп даних таблиці `controller` 36 -- Дамп даних таблиці `controller`
@@ -39,7 +39,9 @@ CREATE TABLE IF NOT EXISTS `controller` ( @@ -39,7 +39,9 @@ CREATE TABLE IF NOT EXISTS `controller` (
39 INSERT INTO `controller` (`controller_id`, `controller_name`) VALUES 39 INSERT INTO `controller` (`controller_id`, `controller_name`) VALUES
40 (1, 'Page'), 40 (1, 'Page'),
41 (2, 'Home'), 41 (2, 'Home'),
42 -(3, 'Catlog'); 42 +(3, 'Catlog'),
  43 +(4, 'News'),
  44 +(5, 'Filter');
43 45
44 -- -------------------------------------------------------- 46 -- --------------------------------------------------------
45 47
@@ -282,19 +284,19 @@ CREATE TABLE IF NOT EXISTS `page_lang` ( @@ -282,19 +284,19 @@ CREATE TABLE IF NOT EXISTS `page_lang` (
282 -- 284 --
283 285
284 INSERT INTO `page_lang` (`page_id`, `page_title`, `meta_title`, `meta_description`, `text`, `page_alias`, `lang_id`) VALUES 286 INSERT INTO `page_lang` (`page_id`, `page_title`, `meta_title`, `meta_description`, `text`, `page_alias`, `lang_id`) VALUES
285 -(1, 'Главная страница', '', '', '', '/', 2),  
286 -(2, 'О компании', '', '', '', 'about', 2),  
287 -(3, 'Условия использования', '', '', '', 'use', 2),  
288 -(4, 'Условия сотрудничества', '', '', '', 'corporation', 2),  
289 -(5, 'Контакты', '', '', '', 'contacts', 2),  
290 -(6, 'Магазины', '', '', '', 'shops', 2),  
291 -(7, 'Поставщики', '', '', '', 'vendors', 2),  
292 -(8, 'Каталог товаров', '', '', '', 'catalog', 2),  
293 -(9, 'Оплата', '', '', '', 'payment', 2),  
294 -(10, 'Доставка', '', '', '', 'delivery', 2),  
295 -(11, 'Гарантия', '', '', '', 'warranty', 2),  
296 -(12, 'Акции', '', '', '', 'promotion', 2),  
297 -(13, 'Новости', '', '', '', 'news', 2); 287 +(1, 'Главная страница', 'Главная страница | ukrseeds.net.ua', '', '', '/', 2),
  288 +(2, 'О компании', 'О компании | ukrseeds.net.ua', '', 'На протяжении уже нескольких лет, наша компания производит заготовку и выращивание на договорной основе семян овощных и цветочных культур в Украине, а также ведет тесное сотрудничество с ведущими европейскими семенными компаниями. Перед тем как поступить в продажу, продукция проходит проверку в нашей лаборатории и Государственной семенной инспекции, что подтверждается сертификатом и гарантирует качество семян согласно ГОСТу Украины. ', 'about', 2),
  289 +(3, 'Условия использования', 'Условия использования | ukrseeds.net.ua', '', '', 'use', 2),
  290 +(4, 'Условия сотрудничества', 'Условия сотрудничества | ukrseeds.net.ua', '', '', 'corporation', 2),
  291 +(5, 'Контакты', 'Контакты | ukrseeds.net.ua', '', 'Головной офис:<br/>\r\nг. Киев-04128, ул. Стеценка, 35,<br/>\r\nт/ф: /044/ 503-7827, e-mail: ukrseeds@gmail.com<br/>\r\nFacebook <br/>\r\n<br/>\r\nМелкооптовая продажа:<br/>\r\nг. Киев, бульвар Академика Вернадского, 14А,<br/>\r\nтел.: /044/ 450-7932, факс: /044/ 452-6497,<br/>\r\ne-mail: 4507932@gmail.com <br/>', 'contacts', 2),
  292 +(6, 'Магазины', 'Магазины | ukrseeds.net.ua', '', '', 'shops', 2),
  293 +(7, 'Поставщики', 'Поставщики | ukrseeds.net.ua', '', 'На сегодняшний день, благодаря динамическому развитию дилерской сети, наша продукция представлена во многих регионах Украины, и уже многие имели возможность удостовериться в качестве наших семян.\nС уважением,\nдиректор ТМ "Семена Украины"', 'vendors', 2),
  294 +(8, 'Каталог товаров', 'Каталог товаров | ukrseeds.net.ua', '', '', 'catalog', 2),
  295 +(9, 'Оплата', 'Оплата | ukrseeds.net.ua', '', '', 'payment', 2),
  296 +(10, 'Доставка', 'Доставка | ukrseeds.net.ua', '', '', 'delivery', 2),
  297 +(11, 'Гарантия', 'Гарантия | ukrseeds.net.ua', '', '', 'warranty', 2),
  298 +(12, 'Акции', 'Акции | ukrseeds.net.ua', '', '', 'promotion', 2),
  299 +(13, 'Новости', 'Новости | ukrseeds.net.ua', '', '', 'news', 2);
298 300
299 -- -------------------------------------------------------- 301 -- --------------------------------------------------------
300 302
@@ -409,8 +411,8 @@ INSERT INTO `template` (`template_id`, `controller_id`, `template_name`, `templa @@ -409,8 +411,8 @@ INSERT INTO `template` (`template_id`, `controller_id`, `template_name`, `templa
409 (1, 1, 'page', 'page/page'), 411 (1, 1, 'page', 'page/page'),
410 (2, 2, 'home', 'page/home'), 412 (2, 2, 'home', 'page/home'),
411 (3, 3, 'catalog', 'shop/catalog'), 413 (3, 3, 'catalog', 'shop/catalog'),
412 -(4, 0, 'filter', 'shop/filter'),  
413 -(5, 0, 'news', 'news/all'); 414 +(4, 5, 'filter', 'shop/filter'),
  415 +(5, 4, 'news', 'news/all');
414 416
415 -- -------------------------------------------------------- 417 -- --------------------------------------------------------
416 418
@@ -556,6 +558,32 @@ CREATE TABLE IF NOT EXISTS `termin_relation` ( @@ -556,6 +558,32 @@ CREATE TABLE IF NOT EXISTS `termin_relation` (
556 -- -------------------------------------------------------- 558 -- --------------------------------------------------------
557 559
558 -- 560 --
  561 +-- Структура таблиці `translate`
  562 +--
  563 +
  564 +CREATE TABLE IF NOT EXISTS `translate` (
  565 + `translate_id` int(6) NOT NULL AUTO_INCREMENT,
  566 + `translate_key` varchar(20) NOT NULL,
  567 + PRIMARY KEY (`translate_id`),
  568 + UNIQUE KEY `translate_key` (`translate_key`)
  569 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  570 +
  571 +-- --------------------------------------------------------
  572 +
  573 +--
  574 +-- Структура таблиці `translate_lang`
  575 +--
  576 +
  577 +CREATE TABLE IF NOT EXISTS `translate_lang` (
  578 + `translate_id` int(6) NOT NULL,
  579 + `translate_value` varchar(3000) NOT NULL,
  580 + `lang_id` int(2) NOT NULL,
  581 + PRIMARY KEY (`translate_id`,`lang_id`)
  582 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  583 +
  584 +-- --------------------------------------------------------
  585 +
  586 +--
559 -- Структура таблиці `user` 587 -- Структура таблиці `user`
560 -- 588 --
561 589
frontend/controllers/PageController.php
@@ -15,7 +15,7 @@ class PageController extends Controller @@ -15,7 +15,7 @@ class PageController extends Controller
15 * 15 *
16 * @return mixed 16 * @return mixed
17 */ 17 */
18 - public function actionPage($page_id, $template_file) 18 + public function actionPage($controller_name, $page_id, $template_file)
19 { 19 {
20 // страница 20 // страница
21 $page = Page::getPageById ($page_id); 21 $page = Page::getPageById ($page_id);
@@ -29,7 +29,7 @@ class PageController extends Controller @@ -29,7 +29,7 @@ class PageController extends Controller
29 'content' => $page['meta_description'], 29 'content' => $page['meta_description'],
30 ]); 30 ]);
31 31
32 - return $this->render('page', $page); 32 + return $this->render($controller_name, $page);
33 } 33 }
34 34
35 } 35 }
36 \ No newline at end of file 36 \ No newline at end of file
frontend/controllers/SiteController.php
@@ -55,7 +55,8 @@ class SiteController extends Controller @@ -55,7 +55,8 @@ class SiteController extends Controller
55 * @inheritdoc 55 * @inheritdoc
56 */ 56 */
57 public function actions() 57 public function actions()
58 - { 58 + {
  59 +
59 // по умолчанию - 404 60 // по умолчанию - 404
60 return [ 61 return [
61 'error' => [ 62 'error' => [
@@ -74,21 +75,28 @@ class SiteController extends Controller @@ -74,21 +75,28 @@ class SiteController extends Controller
74 * @return mixed 75 * @return mixed
75 */ 76 */
76 public function actionIndex() 77 public function actionIndex()
77 - { 78 + {
78 // парсим URL, находим контроллер и подключаем view-файл 79 // парсим URL, находим контроллер и подключаем view-файл
79 -  
80 - if ($page = Page::getPageByUrl ('about'))  
81 - {  
82 - if (Page::isShow ($page)  
83 - && $page['template_file'] != NULL  
84 - && is_file (yii::$app->viewPath.'/'.$page['template_file'].'.php'))  
85 - { 80 + if (($url = substr(yii::$app->request->url, 1)) == '')
  81 + {
  82 + $url = '/';
  83 + }
  84 +
  85 + if ($page = Page::getPageByUrl ($url))
  86 + {
  87 + if (Page::isShow ($page)
  88 + && $page['template_file'] != NULL
  89 + && is_file (yii::$app->viewPath.'/'.$page['template_file'].'.php'))
  90 + {
86 return Yii::$app->runAction($page['template_file'], [ 91 return Yii::$app->runAction($page['template_file'], [
  92 + 'controller_name' => $page['controller_name'],
87 'page_id' => $page['page_id'], 93 'page_id' => $page['page_id'],
88 'template_file' => $page['template_file'], 94 'template_file' => $page['template_file'],
89 ]); 95 ]);
90 } 96 }
91 - } 97 + }
  98 +
  99 + return $this->render('index');
92 } 100 }
93 101
94 /** 102 /**
@@ -96,6 +104,7 @@ class SiteController extends Controller @@ -96,6 +104,7 @@ class SiteController extends Controller
96 * 104 *
97 * @return mixed 105 * @return mixed
98 */ 106 */
  107 +/*
99 public function actionLogin() 108 public function actionLogin()
100 { 109 {
101 if (!\Yii::$app->user->isGuest) { 110 if (!\Yii::$app->user->isGuest) {
@@ -111,24 +120,26 @@ class SiteController extends Controller @@ -111,24 +120,26 @@ class SiteController extends Controller
111 ]); 120 ]);
112 } 121 }
113 } 122 }
114 - 123 +*/
115 /** 124 /**
116 * Logs out the current user. 125 * Logs out the current user.
117 * 126 *
118 * @return mixed 127 * @return mixed
119 */ 128 */
  129 +/*
120 public function actionLogout() 130 public function actionLogout()
121 { 131 {
122 Yii::$app->user->logout(); 132 Yii::$app->user->logout();
123 133
124 return $this->goHome(); 134 return $this->goHome();
125 } 135 }
126 - 136 +*/
127 /** 137 /**
128 * Displays contact page. 138 * Displays contact page.
129 * 139 *
130 * @return mixed 140 * @return mixed
131 */ 141 */
  142 +/*
132 public function actionContact() 143 public function actionContact()
133 { 144 {
134 $model = new ContactForm(); 145 $model = new ContactForm();
@@ -146,6 +157,7 @@ class SiteController extends Controller @@ -146,6 +157,7 @@ class SiteController extends Controller
146 ]); 157 ]);
147 } 158 }
148 } 159 }
  160 +*/
149 161
150 /** 162 /**
151 * Displays about page. 163 * Displays about page.
@@ -162,6 +174,7 @@ class SiteController extends Controller @@ -162,6 +174,7 @@ class SiteController extends Controller
162 * 174 *
163 * @return mixed 175 * @return mixed
164 */ 176 */
  177 +/*
165 public function actionSignup() 178 public function actionSignup()
166 { 179 {
167 $model = new SignupForm(); 180 $model = new SignupForm();
@@ -177,12 +190,14 @@ class SiteController extends Controller @@ -177,12 +190,14 @@ class SiteController extends Controller
177 'model' => $model, 190 'model' => $model,
178 ]); 191 ]);
179 } 192 }
180 - 193 +*/
  194 +
181 /** 195 /**
182 * Requests password reset. 196 * Requests password reset.
183 * 197 *
184 * @return mixed 198 * @return mixed
185 */ 199 */
  200 +/*
186 public function actionRequestPasswordReset() 201 public function actionRequestPasswordReset()
187 { 202 {
188 $model = new PasswordResetRequestForm(); 203 $model = new PasswordResetRequestForm();
@@ -200,6 +215,7 @@ class SiteController extends Controller @@ -200,6 +215,7 @@ class SiteController extends Controller
200 'model' => $model, 215 'model' => $model,
201 ]); 216 ]);
202 } 217 }
  218 +*/
203 219
204 /** 220 /**
205 * Resets password. 221 * Resets password.
@@ -208,6 +224,7 @@ class SiteController extends Controller @@ -208,6 +224,7 @@ class SiteController extends Controller
208 * @return mixed 224 * @return mixed
209 * @throws BadRequestHttpException 225 * @throws BadRequestHttpException
210 */ 226 */
  227 +/*
211 public function actionResetPassword($token) 228 public function actionResetPassword($token)
212 { 229 {
213 try { 230 try {
@@ -226,4 +243,5 @@ class SiteController extends Controller @@ -226,4 +243,5 @@ class SiteController extends Controller
226 'model' => $model, 243 'model' => $model,
227 ]); 244 ]);
228 } 245 }
  246 +*/
229 } 247 }