Маршрутизатор Codeigniter передает сегмент URL как запрос $ _GET - PullRequest
0 голосов
/ 06 февраля 2012

Как мне установить codeigniter для маршрутизации этого:

/download/folder/file.ext

к этому

/download?path=folder/file.ext

?

Я знаю, как это сделать с помощью .htaccess, но возможно ли это только в CI? Я пытался

$route['download/(:any)'] = "download/index/?path=$1"; 

не работал ... спасибо

1 Ответ

1 голос
/ 06 февраля 2012

Я призываю вас изменить свою точку зрения на то, что делает класс CI Router (для меня это было наиболее трудным переходом от подхода «перезаписи» к подходу «маршрутизатора»).

Ваш вопроспредполагает подход «переписывания», и вот как это можно сделать с помощью файла .htaccess:

RewriteRule ^/download/(.*)$ index.php/download/?path=$1 [L]

При этом подходе у вас будет маршрут, соответствующий только части «/ download», изатем вы будете использовать $this->input->get('path') в действии контроллера.

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

<?php
// config/routes.php change:
$routes['download/(:any)'] = 'download/index/$1';

// controllers/download.php:
class Download extends CI_Controller {
    public function index($folder, $file)
    {
        // if the folder is "flat" (i.e. no subfolders),
        // you can simply use $folder and $file
        var_dump($folder);
        var_dump($file);

        // otherwise, $file is the last segment ("n"),
        // and folder is segments 2 through n
        $segments = $this->uri->segment_array();
        $folder = implode('/', array_slice($segments, 2, -1);
        $file   = end($segments);

        // full path is always $folder and $file appended
        $path = $folder.'/'.$file;
        var_dump($path);
    }
}

Это подход, поэтому отрегулируйте его по мере необходимости для ваших конкретных требований.

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...