Commit 8609d3110e2bd6f9a66ab9922a8be21fedef154b

Authored by andryeyev
1 parent 703388f5

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

db-migration/artbox_db.sql
... ... @@ -3,7 +3,7 @@
3 3 -- http://www.phpmyadmin.net
4 4 --
5 5 -- Хост: 127.0.0.1:3306
6   --- Час створення: Лис 09 2015 р., 20:55
  6 +-- Час створення: Лис 11 2015 р., 00:03
7 7 -- Версія сервера: 5.5.45
8 8 -- Версія PHP: 5.6.12
9 9  
... ... @@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS `controller` (
30 30 `controller_id` int(3) NOT NULL AUTO_INCREMENT,
31 31 `controller_name` varchar(50) NOT NULL,
32 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 36 -- Дамп даних таблиці `controller`
... ... @@ -39,7 +39,9 @@ CREATE TABLE IF NOT EXISTS `controller` (
39 39 INSERT INTO `controller` (`controller_id`, `controller_name`) VALUES
40 40 (1, 'Page'),
41 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 284 --
283 285  
284 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 411 (1, 1, 'page', 'page/page'),
410 412 (2, 2, 'home', 'page/home'),
411 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 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 587 -- Структура таблиці `user`
560 588 --
561 589  
... ...
frontend/controllers/PageController.php
... ... @@ -15,7 +15,7 @@ class PageController extends Controller
15 15 *
16 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 21 $page = Page::getPageById ($page_id);
... ... @@ -29,7 +29,7 @@ class PageController extends Controller
29 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 36 \ No newline at end of file
... ...
frontend/controllers/SiteController.php
... ... @@ -55,7 +55,8 @@ class SiteController extends Controller
55 55 * @inheritdoc
56 56 */
57 57 public function actions()
58   - {
  58 + {
  59 +
59 60 // по умолчанию - 404
60 61 return [
61 62 'error' => [
... ... @@ -74,21 +75,28 @@ class SiteController extends Controller
74 75 * @return mixed
75 76 */
76 77 public function actionIndex()
77   - {
  78 + {
78 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 91 return Yii::$app->runAction($page['template_file'], [
  92 + 'controller_name' => $page['controller_name'],
87 93 'page_id' => $page['page_id'],
88 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 104 *
97 105 * @return mixed
98 106 */
  107 +/*
99 108 public function actionLogin()
100 109 {
101 110 if (!\Yii::$app->user->isGuest) {
... ... @@ -111,24 +120,26 @@ class SiteController extends Controller
111 120 ]);
112 121 }
113 122 }
114   -
  123 +*/
115 124 /**
116 125 * Logs out the current user.
117 126 *
118 127 * @return mixed
119 128 */
  129 +/*
120 130 public function actionLogout()
121 131 {
122 132 Yii::$app->user->logout();
123 133  
124 134 return $this->goHome();
125 135 }
126   -
  136 +*/
127 137 /**
128 138 * Displays contact page.
129 139 *
130 140 * @return mixed
131 141 */
  142 +/*
132 143 public function actionContact()
133 144 {
134 145 $model = new ContactForm();
... ... @@ -146,6 +157,7 @@ class SiteController extends Controller
146 157 ]);
147 158 }
148 159 }
  160 +*/
149 161  
150 162 /**
151 163 * Displays about page.
... ... @@ -162,6 +174,7 @@ class SiteController extends Controller
162 174 *
163 175 * @return mixed
164 176 */
  177 +/*
165 178 public function actionSignup()
166 179 {
167 180 $model = new SignupForm();
... ... @@ -177,12 +190,14 @@ class SiteController extends Controller
177 190 'model' => $model,
178 191 ]);
179 192 }
180   -
  193 +*/
  194 +
181 195 /**
182 196 * Requests password reset.
183 197 *
184 198 * @return mixed
185 199 */
  200 +/*
186 201 public function actionRequestPasswordReset()
187 202 {
188 203 $model = new PasswordResetRequestForm();
... ... @@ -200,6 +215,7 @@ class SiteController extends Controller
200 215 'model' => $model,
201 216 ]);
202 217 }
  218 +*/
203 219  
204 220 /**
205 221 * Resets password.
... ... @@ -208,6 +224,7 @@ class SiteController extends Controller
208 224 * @return mixed
209 225 * @throws BadRequestHttpException
210 226 */
  227 +/*
211 228 public function actionResetPassword($token)
212 229 {
213 230 try {
... ... @@ -226,4 +243,5 @@ class SiteController extends Controller
226 243 'model' => $model,
227 244 ]);
228 245 }
  246 +*/
229 247 }
... ...