【问题标题】:CodeIgniter routing with app ID's and entry ID's带有应用 ID 和条目 ID 的 CodeIgniter 路由
【发布时间】:2011-11-29 22:13:25
【问题描述】:

我是 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。非常感谢您的帮助,提前。

【问题讨论】:

  • 在这种情况下什么是“应用程序”?
  • 它本质上是一个照片投票比赛,但我们希望能够多次重复使用它,所以我们创建了一个我认为我称之为“应用程序”的“比赛”,并且该比赛会有一个 ID .在每场比赛中,我们将投票的所有照片都有自己的 ID,例如:example.com{contestID}/{class}/{function}/{photoID}

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


【解决方案1】:

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

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

因此函数的最后一个参数始终是应用程序的 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)

【讨论】:

    【解决方案2】:

    您可以通过将此规则添加到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 是您的网址的其他(假定)变量(最后一段)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多