Для получения полного доступа
зарегистрируйтесь.
RSS

Все сниппеты с тэгами «codeigniter, структура приложения»


dfatt
  • Репутация: 260
  • Сниппеты: 53
  • Ревизии: 7

Давайте, сделаем удобную структуру папок. У нас будет два приложения, а также отдельная папка для общих библиотек. Сделаем мы это стандартными средствами CI, без костылей.

Структура будет следующей:

-- apps
---- backend (админка)
---- frontend
-- framework (ранее папка называлась system)
-- packages
-- backend.php
-- frontend.php

Если скачать фреймворк, в корне у нас лежит index.php, берём его за основу и дублируем два раза с названиями backend.php и frontend.php.

Заходим в backend.php, и прописываем у двух переменных следующее:

$system_path = 'framework';
$application_folder = 'apps/backend';

Тоже самое проделаем с файлом frontend.php, только указываем у переменной:

$application_folder = 'apps/frontend';

Теперь папки apps/backend и apps/frontend независимы. Теперь вы можете их наполнить. Какие папки можно туда положить? Всё что было в папке application (если скачали фреймворк, эта папка есть по-умолчанию).

Добавим в корень .htaccess:

DirectoryIndex frontend.php
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteCond $1 !^(frontend\.php|backend\.php|images|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^backend$ backend\.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^backend/(.*)$ backend\.php/$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ frontend\.php/$1 [L,QSA]

Теперь сделаем папку с общими библиотекам, конфигами и тд. Создаём папку packages, затем добавляем в неё папку с вашим названием пакета и прописываем в конфиге autoload. В каком приложении вам нужен пакет в том конфиге и прописываем:

$autoload['packages'] = ['packages/candy'];

Пример файла роутов для приложений:

// apps/backend/config/routes.php
$route['backend'] = "home/index";
$route['backend/sign-in'] = "user/sign_in";

$route['default_controller'] = "home";
$route['404_override'] = 'home/show404';

// apps/frontend/config/routes.php
$route['sign-in'] = "user/sign_in";

$route['default_controller'] = "home/index";
$route['404_override'] = 'home/show404';