- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
Ситуация такая:
Самописный движок.
MVC но не очень строго.
Получился толстый контроллер, моделей нет, простой ORM чисто по таблицам.
Шаблонизатор поддерживает только пару функций - цикл, вывод переменной, условие. Условие только на ИСТИНА или ЛОЖЬ.
Движок писался по принципу, что каждая страница имеет запись в основной таблице, где есть информация по урл, родительской странице и т.п., ну и название контроллера который за нее отвечает.
т.о. у нас 27 контроллеров для разных типов страниц, и несколько тысяч страниц в базе.
в юии есть такой компонет как урлконтроллер
он расширяется отдельным классом правил, написал два метода, и все ссылки конвертируются в роуты, а роуты в ссылки как родные..
В роутах Ларавел я не нашел как это сделать нормально.
Я начал упорядочивать всё, есть версия где нормальные абстрактные контроллеры, урлменеджер, и ответственности более менее правильно разграничены, но эта версия не полностью рабочая, есть пару небольших глюков.
В новой версии некоторые функции админки неверно отрабатываются. Мне кажется лучшим вариантом было бы, если бы вы начали общую структуру делать, тот же урлменеджер и т.п., а я бы исправил глюки, и уже добивать эту самую вторую версию.
Самый простой контроллер выглядит вот так:
http://pastebin.com/Rt5sN91V
$info->allowedParent = '*';
это список контроллеров которые могут быть "родителями" для нашей страницы
$info->allowedChild = FALSE;
Список дочерних страниц, которые могут быть у нашей страницы. В данном случае таких не может быть, а родитель может быть любой.
$info->unique = TRUE;
это параметр означает, что страница с таким контроллером на сайте может быть только одна. Если уже создали, то новую не создадим.
templ в базе и т.п. означает контроллер а не шаблон. Как-то так в начале повелось, а до рефакторинга так и недобрались.
В новой в папке контроллеров я разделил по степени их сложности. Простейшие, это просто наследование от базового, легкие, это где только read и в корне это более-менее сложные.
Пользователь с рутовыми правами:
mendel
пароль 1709
админки как таковой там нет.
При авторизации админа появляется меню "служебные", но админка не там.
По сути админка у нас на каждой внутренней ссылке, в контекстном меню.
Например если правой кнопкой щелкнуть по логотипу, то откроется менюшка для главной страницы.
Если на ссылку пункта меню - меню для нее, ссылка на новость - меню новости...
У всех контроллеров кроме авторизации стандартный CRUD + сортировка (перемещение вверх/вниз относительно соседей в списке), и файлы.
Все файлы связанные с той или иной страницей привязаны к ней же.
По хорошему надо было делать в той же таблице, чтобы в общем дереве, но они отдельно идут. т.е. если статья называется /статьи/раздел/статья.хтмл
то картинки из нее это /статьи/раздел/статья/картинка.жпг
У контролера также есть функция добавления/удаления картинок.
Естественно оно в абстрактном классе идет.
Да, валидаторы у меня в контроллере, не пугайтесь.
Желательно чтобы модели были Eloquent или если есть весомые причины с другим ОРМ, то можно другой. Шаблоны можно хоть базовые, хоть блейд, но не мои.
И по роутам я бы расширял роуты/реквесты/респонсы, но я с ларавел еще не настолько разобрался чтобы понять где именно надо расшириться... Чую что тут тоже можно в два метода уложиться, но пока не вижу где.
Это Тех задание к предыдущему говнокоду - прошу нормальных спецов прокомментировать.
Я считаю что это полная жопа!
Комментарии (0) RSS
Добавить комментарий