具有应用程序ID和条目ID的CodeIgniter路由

时间:2011-10-03 13:05:18

标签: php model-view-controller codeigniter routing codeigniter-2

我是CodeIgniter的新手,并将使用它来构建一个具有多个应用程序实例的可重用应用程序。例如,应用程序的每个实例都有一个id“12345”,在该实例中,将有1,2,3,4,5,6,7,8等条目ID。

要做到这一点,我想我希望能够使用路由来设置类似的东西:

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

此URI将转到ID = 1的条目的详细信息页面,在应用程序ID 12345中。这将是来自例如/ 12346 / Entry / Details / 1的URL的不同条目组。这是一个需要设置的路由规则,如果是这样,有人可以提供一个如何配置它的示例,然后我将如何在函数内部使用12345和1。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我的建议是你像这样路由你的网址:

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

这样函数的最后一个参数始终是app的id(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)

答案 1 :(得分:0)

您可以通过将此规则添加到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就像示例。

在您的控制台“条目”中,您将获得一个方法“详细信息”,其中包含2个参数,$contestID$photoID,其中$contestID是您要分配的唯一实例,而$photoID是您网址的另一个(假定的)变量(最后一段)。

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

有关详细信息,请参阅URI routing。您可能还需要考虑__remap()覆盖函数,以防万一。