2012-03-02 82 views
2

我有一个全新的codeigniter安装。我只是试图用一个函数在我的默认控制器是这样的:为什么Codeigniter默认控制器中的功能不起作用?

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Welcome extends CI_Controller { 

    public function index() 
    { 

     $data = array(
      'title' => 'Welcome', 
      'description' => 'Welcome Page' 
     ); 

     $this->load->view('layouts/header',$data); 
     $this->load->view('home/home'); 
     $this->load->view('layouts/footer',$data); 
    } 

    public function contact() 
    { 

     $data = array(
      'title' => 'Contact Us', 
      'description' => 'Contact Page' 
     ); 

     $this->load->view('layouts/header',$data); 
     $this->load->view('home/contact'); 
     $this->load->view('layouts/footer',$data); 
    } 
} 

我已删除的index.php成功使用htaccess的。现在,当我访问example.com/welcome/contact时,它可以正常工作,但不能访问example.com/contact/。

为什么这个,不应该这个工作默认情况下不使用路线?

回答

4

“默认控制器”仅在没有URL段时使用。它只调用一种方法,控制器的默认方法是index()

一般来说,你的URL的第一部分映射到控制器:

这将调用contact控制器的index方法:

http://example.com/contact

这将调用hellocontact控制器的方法:

http://example.com/contact/hello

这将调用contact控制器的hello方法,并传递world作为第一个参数:

http://example.com/contact/hello/world

阅读所有关于它的用户指南中:http://codeigniter.com/user_guide/general/urls.html

您需要一个contact控制器才能使用此URL,或者您可以使用routing

0

example.com/contact/调用联系人控制器,并且您拥有的是Welcome控制器(这是您的默认控制器,如@Madmartigan解释过的)中的方法。

5

内笨的使用途径,所以你可以rerwrite新的URI为他们每个人

$route['contact'] = 'welcome/contact'; 

的,不要忘记htaccess文件

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
相关问题