2012-03-02 59 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] 
相關問題