Лучший метод для реализации модуля в Codeigniter - PullRequest
0 голосов
/ 27 декабря 2011

Я немного знаком с CI, и сейчас я пытаюсь создать веб-портал, используя его. Я пытаюсь сделать его достаточно гибким, чтобы принимать виджеты / модули. Так же, как компоненты для Joomla.

Для этого (я думаю) я должен создать модули, но печальная часть CI по умолчанию не принимает никаких модулей. Но с помощью HMVC или Modular CI, даже это может быть возможно, но, поскольку я не использовал их раньше, я не знаю, что подойдет для моего случая в долгосрочной перспективе.

В принципе, я хотел бы общаться с другими модулями и их контроллером через общий контроллер. Вроде как фронт-контроллер.

Например, возьмите мой контроллер по умолчанию в качестве сайта, и функциональность того, что я ищу, выглядит примерно так ...

class Site extends CI_Controller {
    public function index() {
        $appName = $this -> uri -> segment(1); // Take this as app name
        $appControllerName = $this -> uri -> segment(2); // Take this as app controller name


        $this -> load -> module($appName); //Loading our app Module

        $this -> $appName -> load -> controller($appControllerName);

        $this -> $appName -> $appControllerName -> render(); 
        // Take Render() as one of the common method that all the modules controller should have and is reponsible for rendering the HTML

    }
}

Выше кода это то, что я пытаюсь получить. Там может быть лучший способ сделать это. В любом случае я с нетерпением жду ваших ответов .....

1 Ответ

1 голос
/ 27 декабря 2011

Контроллер пользователя

//MX_Controller is the HMVC controller, so anything extending
//this class is a Module

class User extends MX_Controller{ 

//Public function hidden from URL but accessed via Module

public function _comments($user_id){ 
    //grab comments for this users from your database
    //return as an array or object
} 
}

Однажды в ваших представлениях вы можете получить доступ к любому количеству модулей ...

//Dashboard_view.php

//Module One
foreach( Modules::run('User/_comments', $user_id ) as $user_comments )
{
   // return all comments for this user
}

//Module Two
foreach( Modules::run('Widgets/_show_random_stuff', $user_id ) as $user_widgets )
{
   // return all widgets for this user
}
...