2013-06-30 4 views
1

У меня есть вопрос, который касается контроллеров. Давайте это началось:Codeigniter - работа с несколькими контроллерами

  • Я главный контроллер с именем «admin.php», то есть меню для компании, управлений пользователями и т.д. Каждый пункт меню имеет отдельный PHP-файл для хранения различных данных видов [ Кажется, мне сложно объединить все в одном php.

Так для этого примера:

У меня есть 3 контроллеров: admin.php, company.php, usermanagement.php

То, что я хочу есть, связать контроллеры компании и управления как ребенок админ. Поэтому, если ввести адрес в браузере, это может выглядеть так: localhost/admin/company и localhost/admin/usermanagement

Я настроил маршруты, и это хорошо, но когда я вхожу в «localhost/company», он загружает страницу компании, я не хотел. Я хотел связать их все как ребенок на странице администратора.

Как бы я мог достичь этого?

, кстати, вот фрагмент моего кода:

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'); 
      } 
    } 

Спасибо, Джеймс

EDIT: Я пытался добавить функции на 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'); 
      } 

'Subpage' является:

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

и т.д., и т.д ...

+0

Я пробовал. Но это не эффективно, поскольку мне нужно больше писать коды позже в моем проекте и, как правило, меня путают позже.Я новичок в архитектуре MVC, а мои предыдущие сайты - от родного php. – Bajongskie

Смежные вопросы