[英]Controller inside a folder inside a folder not working (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)
我可以做/application/controllers/folderA/file.php並擁有其中的所有函數,所以它的工作原理如下:
localhost/folderA/file
localhost/folderA/file/functionb
localhost/folderA/file/functionc
但是,當使用子子目錄完成相同的結果時,這會使文件變得非常大。 說得通?
我希望在子文件夾中的許多文件中重新分配它,而不是將所有內容都放在一個控制器文件中。 ...所有文件都可以分散在這個新文件夾中,因為單個文件中不需要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/
one下創建子目錄,然后將控制器類放在其中。使用此功能時,URI的第一段必須指定文件夾。
每個子目錄可能包含一個默認控制器,如果URL僅包含子目錄,則將調用該控制器。 只需在其中放置一個與
application/config/routes.php
文件中指定的default_controller
名稱相匹配的控制器。CodeIgniter還允許您使用URI路由功能重新映射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
,您可以實現您希望的任何復雜URL ...
$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';
好的,所以我想出了使用路線的解決方案。 雖然我不明白為什么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。 當當!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.