CodeIgniter маршрутизация с идентификаторами приложений и записей - PullRequest
1 голос
/ 03 октября 2011

Я новичок в CodeIgniter и собираюсь использовать его для создания своего рода приложения многократного использования с несколькими экземплярами приложения. Например, каждый экземпляр приложения будет иметь идентификатор «12345», а внутри этого экземпляра будут идентификаторы входа 1,2,3,4,5,6,7,8 и т. Д.

для этого, я думаю, я хочу использовать Routing для настройки что-то вроде:

http://example.com/12345/Entry/Details/1

Куда этот URI перейдет на страницу «Подробности» записи ID = 1, внутри идентификатора приложения 12345. Эта группа записей будет отличаться от URL, скажем, / 12346 / Entry / Details / 1. Является ли это правилом маршрутизации, которое необходимо настроить, и если да, может ли кто-нибудь предоставить пример того, как это можно настроить, и затем, как я смогу использовать 12345 и 1 внутри функции. Заранее большое спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 03 октября 2011

Вы можете добиться такой маршрутизации, добавив это правило в файл application/config/routes.php:

$route['default_controller'] = "yourdefaultcontroller";
$route['404_ovverride'] = "";
// custom route down here:
$route['(:num)/entry/details/(:num)'] = "entry/details/$1/$2",

, конечно, если ваш URI будет таким же, как в примере.

В вашем контроллере«Entry» будет иметь метод «details», который принимает 2 параметра: $contestID и $photoID, где $contestID - это уникальный экземпляр, который вы назначаете, а $photoID - другая (предполагаемая) переменнаяВаш URL (последний сегмент).

class Entry extends CI_Controller(
{
    function details {$contestID, $photoID)
    { //do your codeZ here }
}

См. URI-маршрутизация для получения дополнительной информации об этом.Вы также можете рассмотреть возможность переопределения __remap(), на всякий случай.

0 голосов
/ 03 октября 2011

Я бы посоветовал вам перенаправить ваши URL-адреса следующим образом:

$route['(:any)/{controller_name}/(:any)/(:any)'] = '{controller_name}/$2/$3/$1';

, чтобы последним параметром функции всегда был идентификатор приложения (12345/12346).Это означает, что функции вашего контроллера Entry будут выглядеть следующим образом:

class Entry extends CI_Controller
{
   function Details(var1, var2, ..., varn, app_id){}

   function Someother_Function (var 1, app_id){}
}

, вам также потребуется добавить маршрут для функций, которые не имеют ничего, кроме app_id:

$route['(:any)/{controller_name}/(:any)'] = '{controller_name}/$2/$1'; //This may work for everything.

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

Редактировать:

Если вы собираетесь использовать только цифры, вы можете использовать (:num) вместо (:any)

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