我在使用codeigniter方面表现不错,但现在我遇到了一些麻烦。我希望在子文件夹中的许多文件中重新分配它,而不是将所有内容都放在一个控制器文件中。例如:
本地主机/ folderA / FolderB中/ controllerFile
这样,文件夹B替换了控制器的主文件,所有文件都可以分散在这个新文件夹中,因为在一个文件中不需要有10个不同的控制器功能(你知道它很大)
在路线中我添加了一个新行
$ route [' folderA / folderB /(:any)/'] =' folderA / folderB';
我甚至不认为添加路线甚至是必要的,但它不起作用,无论如何总是得到404页。现在,如果我把它带回文件夹,控制器的代码完全相同。这意味着 / folderA / folderB / controllerFile 可以在 / folderA / controllerFile 中使用而无需担心。
我的目标不是将这些文件移到目录上,而是保持结构与以前一样。有没有人为这样的事情而生气?我这么想......哈哈
感谢阅读!
编辑:为了澄清这是正在进行的事情:
/application/controllers/file.php (OK)
/application/controllers/folderA/file.php (OK)
/application/controllers/folderA/folderB/file.php (This does not work)
我可以执行/application/controllers/folderA/file.php并拥有其中的所有函数,因此它的工作原理如下:
localhost/folderA/file
localhost/folderA/file/functionb
localhost/folderA/file/functionc
但是,当使用子子目录完成相同的结果时,这会使文件变得非常大。有意义吗?
答案 0 :(得分:5)
我希望在子文件夹中的许多文件中重新分配它,而不是将所有内容都放在一个控制器文件中。 ...所有文件都可以分散在这个新文件夹中,因为单个文件中不需要10个不同的控制器功能。
您已经可以将函数放在名为controllers
的一个目录下的多个控制器文件中。从来没有要求将所有功能都放在一个控制器文件中。
默认情况下,所有控制器都存储在controllers
目录...
/application/controllers/
示例:
/application/controllers/Users.php
/application/controllers/Auth.php
/application/controllers/Etc.php
我甚至认为添加路线甚至是必要的,但它无法正常工作,无论如何都会得到404页。
如果要使用控制器的子目录,则这些子目录必须包含在controllers
目录中,您需要按照文档进行操作。
/application/controllers/subfolderA/
/application/controllers/subfolderB/
如果要构建大型应用程序,则可能需要按层次结构将控制器组织或构建到子目录中。 CodeIgniter允许您这样做。
只需在主
application/controllers/
下创建子目录,然后将控制器类放在其中。使用此功能时,URI的第一段必须指定文件夹。
每个子目录都可能包含一个默认控制器,如果URL只包含子目录,则会调用该控制器。只需在控制器中放置一个与
default_controller
文件中指定的application/config/routes.php
名称相匹配的控制器。CodeIgniter还允许您使用其URI Routing功能重新映射您的URI。
修改强>:
我可以做
/application/controllers/folderA/file.php
并拥有其中的所有功能,所以它的工作原理如下:
localhost/folderA/file
localhost/folderA/file/functionb
localhost/folderA/file/functionc
但是当使用子子目录完成相同的结果时,会使文件变得非常大。有意义吗?
为什么要继续谈论单个大文件"?您可以根据需要将功能分解为任意数量的控制器文件,而无需任何子目录。
/application/controllers/Users.php
/application/controllers/Auth.php
/application/controllers/Etc.php
分别通过URL访问
/users/function_foo
/auth/function_bar
/etc/function_foobar
然后使用routes.php
,您可以实现您希望的任何复杂网址......
$route['foldera/testPage/testing'] = 'users/function_foo';
但是,如果要在controllers
目录中使用子目录...
/application/controllers/subdirectory/Controller_a.php
通过URL访问为...
/subdirectory/controller_a/some_function
可以重新路由为任何你想要的 ...
$route['foo/bar/anything/here/tester/foobar'] = 'subdirectory/controller_a/some_function';
答案 1 :(得分:1)
好的,所以我使用路线找出解决方案。虽然我不明白为什么codeigniter不允许3级文件夹,但我最终做的是在 / application / controllers / test / 中创建一个新文件夹,并在我的文件夹中我的 test.php 文件。
然后我回到路线配置文件并添加以下行:
$route['foldera/testPage/testing'] = 'test/test';
当您将浏览器定向到页面
时,这实际上是做什么的http://localhost/foldera/testPage/testing
它会将该页面视为/application/controllers/test/test.php
中的内容它基本上给它一个别名。但是,如果你去localhost / test / test它将没有问题,并将它与foldera / testPage / testing.php完全相同为了解决这个小问题,只需在路由配置文件中添加另一行
$route['test/test'] = 'notfound'; // Your 404 page controller
现在访问该文件夹的唯一方法是直接从您想要的URL。当当!