2013-06-30 31 views
1

我有一個關於控制器的問題。讓我們把它開始:Codeigniter - 使用多個控制器

  • 我有一個主控制器命名爲「admin.php的」,它爲企業,用戶管理等菜單,菜單上的每個項目都有單獨的PHP文件來保存不同類型的數據[我似乎很費力地將它們全部在一個PHP中。

因此,對於這個例子:

我有3個控制器:admin.php的,company.php,usermanagement.php

我要的是,連接公司和管理控制器作爲一個孩子管理員。所以如果輸入瀏覽器的地址,它可能看起來:localhost /管理/公司和本地主機/管理/用戶管理

我配置了路由,它很好,但是當我輸入「本地主機/公司」它加載公司頁面我不想。我想將它們全部鏈接爲管理頁面的子項。

我該怎麼做到這一點?

這裏的方式是我的代碼片段:

admin.php的 - 控制器

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

class Admin extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     session_start(); 
    } 

    public function index() { 
      $this->load->view('view_admin'); 
     } 
} 

公司 - 同管理員

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

    class Company extends CI_Controller { 

     function __construct(){ 
      parent::__construct(); 

      session_start(); 
     } 

     public function index() { 
       $this->load->view('view_company'); 
      } 
    } 

謝謝, 詹姆斯

編輯:我曾嘗試在admin.php的添加功能,如:

功能公司(){} 功能usermanagement(){}

,但我想這是不是有效,因爲它隨後我將嘗試將我的本地php代碼遷移到此MVC體系結構框架中,其中包含許多功能。

回答

2

如果你的問題是你喜歡路線的工作方式,但不希望人們能夠訪問index.php/company /而寧願他們訪問管理員/公司,你總是可以這樣做:

class Company extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     if ($this->uri->segment(1) != "admin") { 
      redirect('admin/company/'.$this->uri->segment(3)); 
     } 
    } 

... 

雖然請記住,您可能需要一個更完整的URL形成方法,而不僅僅是添加$this->uri->segment(3),但一般模式在那裏。

+0

完美。這是我正在尋找的。但是,我有一個問題,它爲什麼會在重定向部分上拋出錯誤?如果我刪除它,它都工作正常。我也自動加載了uri,但該行仍然會引發錯誤。 – Bajongskie

+0

您需要加載URL助手才能使用redirect()http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html – Dormouse

+0

哦,它們已加載。我的意思是,如果我在重定向上添加了這段代碼,它會拋出一個錯誤:$ this-uri-> segment(3) – Bajongskie

0

您可以在 '管理' 控制器添加更多的功能,所以,默認頁面是:

public function index() { 
       $this->load->view('view_admin'); 
      } 

'的子頁面' 是:

public function company() { 
       $this->load->view('view_company'); 
      } 

等等,等等......

+0

我試過了。但它不是有效的,因爲我需要在我的項目後面編寫更多的代碼,並且往往會在以後出現混淆。我是MVC架構的新手,我的以前的站點來自本機php。 – Bajongskie