2017-09-26 91 views
3

訪問控制器只有文件夾名稱如何訪問控制器只有文件夾名稱,文件夾存在於控制器中。 文件夾名稱是admin在控制器文件夾內。控制器是管理文件夾內的儀表板(php文件)。如何使用路徑

$route['admin/(:any)'] = 'admin/dashboard'; 

htaccess的

RewriteEngine on 
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 

我要訪問儀表板(PHP文件)使用:http://Website/admin。但沒有工作。我thnik,我有上面的路線問題。 enter image description here

工作路線

$route['(:any)'] = "admin/dashboard"; 

使用$route['(:any)']頁面可以訪問:http://Website/any-string-or-letter。但是,如何只訪問:http://Website/admin

+0

mod_rewrite的是你哥們......看看吧。 –

+0

[Codeigniter使子目錄控制器工作]的可能的重複](https://stackoverflow.com/questions/9098362/codeigniter-making-sub-directory-controllers-work) – Vickel

+0

@Vickel,沒有它不同的東西 – Super

回答

1

按照以下步驟做:

  1. 控制器文件夾application/controllers/admin
  2. 內創建一個文件夾中創建您的文件夾內的控制器。例如:application/controllers/admin/dashboard

儀表板。PHP

<?php 

defined('BASEPATH') OR exit('No direct script access allowed'); 

class Dashboard extends CI_Controller { 

    /** 
    * Index Page for this controller. 
    * 
    */ 


    public function index() 
    { 
     $this->load->view('my-view'); 
     //$this->load->view('admin/my-view'); //If you are saving the views in a sub directory under views/admin/my-view.php 
    } 

} 

創建一個my-view.phpapplication/controllers/views/my-view.php

<h5>MY VIEW FILE CONTENT</h5> 

訪問該控制器是這樣的:如果你是在本地主機上,然後它會像:http://localhost/my-project/admin/dashboard/index

的.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /my-project 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system) 
    RewriteRule ^(.*?)$ /my-project/index.php?/$1 [L] 
</IfModule> 
  • *更新項目的文件夾名稱。

routes.php文件

$route['admin'] = 'admin/dashboard/index'; 

*請嘗試刪除/發表評論所有其他路線,除了這一個避免衝突

+0

如何在Dashboard.php中調用視圖,在該視圖中註釋了該控制器的索引頁面。 – Super

+0

如何使用url訪問控制器(http:// localhost/my-project/admin)而不是完整的url(http:// localhost/my-project/admin/dashboard/index)? – Super

+0

在'application/views/my-view.php'下創建一個視圖文件並使用這個函數$ this-> load-> view('my-view');' – Harish

0

您現在可能正在面臨的問題是CodeIgniter期待的是(:any)的地方,所以當您嘗試去/ admin時失敗,因爲沒有Admin.php控制器,並且您缺少第二個URI段。試試這個:

$route['admin/(.+)'] = function ($x = NULL) 
{ 
    return 'admin/dashboard'; 
}; 

或許另一個要考慮的是什麼CI用戶指南說,大約在子目錄中的控制器,並且你可能有一個默認的控制器:

您的每一個子目錄可能包含一個默認的控制器,如果該URL只包含子目錄,該控制器將被調用。只需在其中添加一個控制器,該控制器與application/config/routes.php文件中指定的'default_controller'的名稱相匹配。

鏈接至該節:https://www.codeigniter.com/userguide3/general/controllers.html#organizing-your-controllers-into-sub-directories

這也就意味着,如果你在配置/ routes.php文件看,如果你的default_controller是「歡迎」,那麼你也可以有一個控制器指定的應用程序/控制器/admin/Welcome.php,如果沒有其他匹配的控制器,則發送到/ admin的請求將會到達那裏。

我不認爲這是理想的。如果是我,我會在應用程序組織的方式中找出別的東西。