2017-09-26 86 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的请求将会到达那里。

我不认为这是理想的。如果是我,我会在应用程序组织的方式中找出别的东西。