<i id='JnBws'><tr id='JnBws'><dt id='JnBws'><q id='JnBws'><span id='JnBws'><b id='JnBws'><form id='JnBws'><ins id='JnBws'></ins><ul id='JnBws'></ul><sub id='JnBws'></sub></form><legend id='JnBws'></legend><bdo id='JnBws'><pre id='JnBws'><center id='JnBws'></center></pre></bdo></b><th id='JnBws'></th></span></q></dt></tr></i><div id='JnBws'><tfoot id='JnBws'></tfoot><dl id='JnBws'><fieldset id='JnBws'></fieldset></dl></div>
  • <tfoot id='JnBws'></tfoot>

  • <legend id='JnBws'><style id='JnBws'><dir id='JnBws'><q id='JnBws'></q></dir></style></legend>

    <small id='JnBws'></small><noframes id='JnBws'>

      • <bdo id='JnBws'></bdo><ul id='JnBws'></ul>

        如何在 Codeigniter 项目中获取所有控制器的数组?

        时间:2023-10-11
          <tbody id='VyoZy'></tbody>

              <small id='VyoZy'></small><noframes id='VyoZy'>

              <legend id='VyoZy'><style id='VyoZy'><dir id='VyoZy'><q id='VyoZy'></q></dir></style></legend>
                <i id='VyoZy'><tr id='VyoZy'><dt id='VyoZy'><q id='VyoZy'><span id='VyoZy'><b id='VyoZy'><form id='VyoZy'><ins id='VyoZy'></ins><ul id='VyoZy'></ul><sub id='VyoZy'></sub></form><legend id='VyoZy'></legend><bdo id='VyoZy'><pre id='VyoZy'><center id='VyoZy'></center></pre></bdo></b><th id='VyoZy'></th></span></q></dt></tr></i><div id='VyoZy'><tfoot id='VyoZy'></tfoot><dl id='VyoZy'><fieldset id='VyoZy'></fieldset></dl></div>
                  <bdo id='VyoZy'></bdo><ul id='VyoZy'></ul>
                • <tfoot id='VyoZy'></tfoot>
                  本文介绍了如何在 Codeigniter 项目中获取所有控制器的数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想获取 Codeiginiter 项目中所有控制器的列表,以便我可以轻松地遍历每个控制器并添加定义的路由.我似乎找不到一种方法可以满足我的需求?

                  I'd like to obtain a list of all controllers in a Codeiginiter project so I can easily loop through each of them and add defined routes. I can't seem to find a method that will give me what I'm after ?

                  这是我想要访问数组的 routes.php 文件中的代码片段:-

                  Here is the code snippet from the routes.php file where I would like to access the array: -

                  // I'd like $controllers to be dynamically populated by a method
                  //
                  $controllers = array('pages', 'users');
                  
                  // Loop through each controller and add controller/action routes
                  //
                  foreach ($controllers as $controller) {
                      $route[$controller] = $controller . '/index';
                      $route[$controller . '/(.+)'] = $controller . '/$1';
                  }
                  
                  // Any URL that doesn't have a / in it should be tried as an action against
                  // the pages controller
                  //
                  $route['([^/]+)$'] = 'pages/$1';
                  

                  更新 #1

                  为了进一步解释我想要实现的目标..我有一个页面控制器,其中包含诸如关于、联系我们、隐私等页面.这些页面都应该可以通过/about、/contact-us 访问和/隐私.所以基本上,Pages 控制器中的任何操作/方法都应该可以访问,而无需指定/pages/.

                  To explain a little more what I'm trying to achieve.. I have a Pages controller which contains pages such as about, contact-us, privacy etc. These pages should all be accessible via /about, /contact-us and /privacy. So basically, any action/method in the Pages controller should be accessible without having to specify /pages/<action>.

                  不确定我是否以正确的方式进行处理?

                  Not sure if I'm going about this the right way ?

                  推荐答案

                  直接回答编码问题,你可以这样做:

                  Well to directly answer to coding question, you can do this:

                  foreach(glob(APPPATH . 'controllers/*' . EXT) as $controller)
                  {
                      $controller = basename($controller, EXT);
                  
                      $route[$controller] = $controller . '/index';
                      $route[$controller . '/(.+)'] = $controller . '/$1';
                  }
                  

                  Buuuuuut 这可能不是最灵活的方法.

                  Buuuuuut this may not work out to be the most flexible method further down the line.

                  还有其他一些方法可以做到这一点.一种是创建一个MY_Router并插入

                  There are a few other ways to do it. One is to create a MY_Router and insert

                  $this->set_class('pages'); 
                  $this->set_method($segments[0]);
                  

                  之前/代替show_404();

                  before/instead of show_404();

                  这会将/contact 发送到/pages/contact,但前提是没有控制器、方法、路由首先映射到.

                  That will send /contact to /pages/contact, but only if no controllers, methods, routes are mapped to first.

                  OOOOOOORRRRRR 使用 Modular Separation 并将以下内容添加到您的主要 routes.php

                  OOOOOOORRRRRR use Modular Separation and add the following to your main routes.php

                  $routes['404'] = 'pages';
                  

                  这篇关于如何在 Codeigniter 项目中获取所有控制器的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Codeigniter 与本地主机 (XAMPP) 中的路径有关的问题 下一篇:使用 Code Igniter 控制器和视图创建 foreach 循环

                  相关文章

                  <legend id='XBAlf'><style id='XBAlf'><dir id='XBAlf'><q id='XBAlf'></q></dir></style></legend>

                  <small id='XBAlf'></small><noframes id='XBAlf'>

                    <bdo id='XBAlf'></bdo><ul id='XBAlf'></ul>

                • <tfoot id='XBAlf'></tfoot>
                  <i id='XBAlf'><tr id='XBAlf'><dt id='XBAlf'><q id='XBAlf'><span id='XBAlf'><b id='XBAlf'><form id='XBAlf'><ins id='XBAlf'></ins><ul id='XBAlf'></ul><sub id='XBAlf'></sub></form><legend id='XBAlf'></legend><bdo id='XBAlf'><pre id='XBAlf'><center id='XBAlf'></center></pre></bdo></b><th id='XBAlf'></th></span></q></dt></tr></i><div id='XBAlf'><tfoot id='XBAlf'></tfoot><dl id='XBAlf'><fieldset id='XBAlf'></fieldset></dl></div>