CodeIgniter: константа Константы.php вытащили из БД
0 codezyne [2012-04-08 07:26:00]
Моя squad
контроллера управляет всеми функциональными возможностями внутренней группы в более крупном сообществе CMS. Я хотел бы предложить администратору возможность изменять глагол, относящийся к этой группе. Примерами таких могут быть: team
, wing
, platoon
или даже dogfood
если она их удовлетворяет.
Проблема, с которой я сталкиваюсь, должна вытащить маршрутизацию из строки базы данных, поэтому site.com/squad
становится значением, которое устанавливает администратор. Однако. нельзя сделать это без а) взлома ядра или б) расширения CI_Router.
Я начал расширение, но только получил это:
class MY_Router extends CI_Router {
function MY_Router()
{
$this->config =& get_config();
parent::__construct();
}
}
Все, что я хотел бы сделать, это:
define('UNIT', $this->get_setting('squad-term'));
$route[UNIT] = "squad";
У кого-нибудь есть подход к этому?
codeigniter routes
2 ответа
1 Решение codezyne [2012-04-09 19:50:00]
Мой друг нашел эту статью, и решение работает отлично. Конечно, требуется другой запрос db, но это цена, которую нужно заплатить.
config/routes.php
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->where('setting_slug', 'squad-term')->get( '_settings' );
$result = $query->result();
$term = lcfirst($result[0]->setting_value);
$route[$term] = "squad";
$route[$term . 's'] = "squads";
1 stef [2012-04-08 20:45:00]
Обычно я делаю это, чтобы добавить в сегмент строку (например: squad_), которую вы можете сопоставить с регулярным выражением в route.php
site.com/squad_team
site.com/squad_squad
site.com/squad_dogfood
Или немного чище, добавьте еще один "уровень", который затем можно сопоставить в route.php через $route['s/(:any)']
site.com/s/team
site.com/s/squad
site.com/s/food
Сказав это, я не уверен, почему вы
необходимо переписать имя контроллера команды
?