2016-12-29 3 views
0

Привет Я работаю над приложением, которое использует среду администратора и пользовательскую среду. Чтобы сделать мой код и контроллеры более удобочитаемыми, я хотел бы использовать какой-то префикс для моего администратора и пользовательских контроллеров. Или, возможно, используйте другой каталог для пользовательских контроллеров admin. Без использования точного имени в URL-адресе для вызова контроллеров.Использование пользовательских именованных контроллеров с codeigniter

Кто-нибудь знает, есть ли способ сделать это или работать для моей идеи. Например, я хотел бы использовать:. Пользователь [controllername] .php или Пользователь_ [controllername] .php

EDIT:

Так что, когда я использую маршруты для разделения контроллеров пользователей от контроллеров администратора, то тормоза мой шаблонный резольвер.

Например, предположим, что URL-адрес: http://myapplication.com/user/profile, в обычных случаях это вызовет пользовательский контроллер и профиль функции. Мой шаблонный искатель ищет пользователя папки и проверяет, есть ли файл level1.tpl. Допустим, мы хотим изменить эту анкету URL-адрес будет: http://myapplication.com/user/profile/edit/1 теперь поиск будет в папке пользователя для файла level2.tpl и будет вызывать функцию редактирования с идентификатором 1.

Проблема с маршрутами, что он добавляет что-то к url-знаку, которого я не хочу, потому что тогда он ищет в неправильной папке, например, когда мы используем admin/dashboard, он будет выглядеть в папке admin вместо панели управления папкой.

enter image description here

Поэтому в основном то, что мне нужно только лишь сказать приложение, чтобы использовать другой каталог, в котором расположены контроллеры или другое имя файла базы о том, какие пользователь вошел в систему.

Спасибо заранее, для обмена знаниями.

+0

Как насчет того, чтобы использовать только маршруты? https://www.codeigniter.com/userguide3/general/routing.html – jcorry

+1

Вы также можете создать папку, в которой вы оставите свои контроллеры 'admin' физически отделенными от' user', если хотите. Когда вы обращаетесь к своему URL-адресу, например. 'example.com/admin/dashboard' (говоря, что вы удалили' index.php'), Codeigniter будет искать контроллер 'Dashboard' в папке с именем' admin'. – Hicaro

ответ

2

Вы можете сделать это разными способами.

1. Создать два файла в приложении/ядра под названием "Admin_Controller.php" и "User_Controller.php" со следующей сигнатурой класса,

class Admin_Controller extends CI_Controller 
{  
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

и

class User_Controller extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

В этих классах вы можете использовать свою логику PHP, чтобы делать все, что хотите, просто расширяет ваши контроллеры до Admin_Controller или User_Controller. например: class Home extends User_Controller {} или class Dashboard extends Admin_Controller {}

2. Вы также можете просто сделать это с routes.php

например:

// for admin 
$route['admin/(.+)'] = 'admin_$1'; 

// for frontend 
$route['(.+)'] = 'user_$1'; 

Я надеюсь, что это может дать вам некоторое представление.

+0

Можно ли также не добавлять ничего лишнего в URL? Я также использую пользовательские каталоги для моей интеграции с шаблонами с smarty, которая работает только штрафами, но также строит мои шаблоны на основе структуры url, поэтому, когда я добавляю что-то к URL-адресу, приложение ищет неправильные папки для файлов шаблонов. – Iason

+1

ОК, тогда вам нужно сопоставить все возможные запросы с соответствующим контроллером. например: '/ home' будет загружать' Home controller', '/ dashboard' будет загружать' Dashboard controller' и т. д. Для этого просто создайте новый файл в application/core с файлом 'MY_Controller.php' с подписью' MY_Controller extends CI_Controller {} 'в этом классе просто использует метод' public function _remap() {} ', где вы можете использовать случай переключения для соответствующего вызова класса. Помимо этого вы также можете сделать это в файле маршрутов. – puncoz

Смежные вопросы