控制器内部文件夹内的文件夹无法正常工作(Codeigniter)

php*_*ain 3 php codeigniter

我在使用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)
Run Code Online (Sandbox Code Playgroud)

我可以做/application/controllers/folderA/file.php并拥有其中的所有函数,所以它的工作原理如下:

localhost/folderA/file
localhost/folderA/file/functionb
localhost/folderA/file/functionc
Run Code Online (Sandbox Code Playgroud)

但是,当使用子子目录完成相同的结果时,这会使文件变得非常大.说得通?

Spa*_*rky 5

我希望在子文件夹中的许多文件中重新分配它,而不是将所有内容都放在一个控制器文件中....所有文件都可以分散在这个新文件夹中,因为单个文件中不需要10个不同的控制器功能.

您已经可以在一个名为的目录下将函数放入多个控制器文件中controllers.从来没有要求将所有功能放入一个控制器文件中.

默认情况下,所有控制器都存储在controllers目录中......

/application/controllers/
Run Code Online (Sandbox Code Playgroud)

例:

/application/controllers/Users.php
/application/controllers/Auth.php
/application/controllers/Etc.php
Run Code Online (Sandbox Code Playgroud)

我甚至认为甚至没有必要添加一条路线,但它不起作用,无论如何总是得到一个404页面.

如果要将子目录用于控制器,则这些子目录必须包含在controllers目录中,您需要按照文档进行操作.

/application/controllers/subfolderA/
/application/controllers/subfolderB/
Run Code Online (Sandbox Code Playgroud)

根据文件:

如果要构建大型应用程序,则可能需要按层次结构将控制器组织或构建到子目录中.CodeIgniter允许您这样做.

只需在主要目录下创建子目录application/controllers/并将控制器类放在其中.

使用此功能时,URI的第一段必须指定文件夹.

每个子目录可能包含一个默认控制器,如果URL仅包含子目录,则将调用该控制器.只需在其中放置一个与default_controllerapplication/config/routes.php文件中指定的名称相匹配的控制器即可.

CodeIgniter还允许您使用URI路由功能重新映射URI .


编辑:

我可以做到/application/controllers/folderA/file.php并拥有其中的所有功能,所以它的工作原理如下:

localhost/folderA/file
localhost/folderA/file/functionb
localhost/folderA/file/functionc
Run Code Online (Sandbox Code Playgroud)

但是,当使用子子目录完成相同的结果时,这会使文件变得非常大.说得通?

为什么一直在谈论"单个大文件"? 您可以根据需要将功能分解为任意数量的控制器文件,而无需任何子目录...

/application/controllers/Users.php
/application/controllers/Auth.php
/application/controllers/Etc.php
Run Code Online (Sandbox Code Playgroud)

分别通过URL访问

/users/function_foo
/auth/function_bar
/etc/function_foobar
Run Code Online (Sandbox Code Playgroud)

然后使用routes.php,你可以实现你想要的任何复杂的URL ...

$route['foldera/testPage/testing'] = 'users/function_foo';
Run Code Online (Sandbox Code Playgroud)

但是,如果要在controllers目录中使用子目录...

/application/controllers/subdirectory/Controller_a.php
Run Code Online (Sandbox Code Playgroud)

通过URL访问为...

/subdirectory/controller_a/some_function
Run Code Online (Sandbox Code Playgroud)

可以像你想要的任何东西一样重新路由......

$route['foo/bar/anything/here/tester/foobar'] = 'subdirectory/controller_a/some_function';
Run Code Online (Sandbox Code Playgroud)