Динамическая маршрутизация Codeigniter (или загрузка одного контроллера с использованием разных URL из БД) - PullRequest
0 голосов
/ 10 июня 2011

У меня следующая проблема, я получаю URL, такие как domain.com/en/contact или domain.com/de/kontakt.Я хотел бы, чтобы оба указали на контроллер contact.php.

В данный момент я использую следующий код:

$ route ['(\ w {2})/(\w]2 rout)/contact/?(.)? '] =' contact ';
$ route [' (\ w {2}) / (\ w {2}) / kontakt/?(.
)? '] =' Contact ';

Я бы предпочел, чтобы это было так.

fn get_type ()
{
получает страницы и тип (с указанием контроллера, например, контакта)
}

$ type = get_type ($ param = ...);

load_controller ($ type);// загружает контроллер изнутри базового контроллера

Так что я знаю, что это неправильный синтаксис codeigniter, я бы предпочел не использовать библиотеки и загромождать каталог моей библиотеки библиотеками, такими как thoses.У кого-нибудь есть хорошая идея для этого?Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июня 2012

Чтобы заставить работать динамическую маршрутизацию, я делаю следующее.

CMS записывает файл в каталог конфигурации codeigniter, назовем его dynamic_route.php Написанный файл является аналогом файла конфигурации normale route.php.

An пишет что-то вроде

$route['(\w{2})/(\w{2})/URL_PART_FROM_CMS/?(.)?'] = 'CONTROLLER_CHOSEN_IN_CMS';

Этот файл включен в файл routs.php

.
$route['default_controller'] = "content";
$route['404_override'] = '';
// include file
include('dynamic_routes.php');

Каждый раз, когда cms меняется. динамический файл переписан. Это делает его очень динамичным без какого-либо влияния на производительность.

0 голосов
/ 10 июня 2011

Вы можете посмотреть переназначение метода, передаваемого вместо использования маршрутов:

function index(){
    // my default method
}
function _remap($method){
    if ($method == 'en'){
        $this->english();
    } else if($method == 'de') {
        $this->german();
    } else {
        $this->index();
    }
}

function english(){
    // my english method
}

function german(){
    // my german method
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...