MVC и просмотр в модели - PullRequest
0 голосов
/ 02 марта 2012

Я создаю приложение с использованием Codeigniter и MVC.Я нахожусь в точке, где я хочу создать повторно используемые инструменты администрирования для различных объектов, таких как запись, пользователь, категория.Мне понадобятся конкретные наборы инструментов для разных контроллеров и представлений, а также несколько раз.

Я хочу иметь возможность вызывать что-то вроде $this->load_admin_tools($name,$data), где $name будет именем наборов инструментов (которое будет простоhtml формы) и $data необходимые переменные для обработки этих форм (скорее всего $id объекта).

Я хочу сделать это, чтобы в одном месте добавить или удалить некоторые инструменты.

Я думал о создании model_admin_tools, где я буду проверять разрешение, если инструменты должны отображаться, а затем загружать правильный вид (с формами для удаления / редактирования / и т. Д.).Я знаю, что это должен быть контроллер (для проверки разрешений, а затем для решения, показывать что-то или нет), но повторять один и тот же код снова и снова, для меня это хуже, чем помещать их в модель.Я мог бы создать частную функцию в контроллере, но тогда мне пришлось бы добавить эту функцию ко всем моим контроллерам.

Есть ли лучший способ добиться этого?Я думал о помощниках, но опять же, помощники не для «просмотра».А может я просто слишком навязчив?

Заранее спасибо.

1 Ответ

1 голос
/ 02 марта 2012

Неплохая практика - использовать помощников в представлении. Один помощник, который я постоянно использую в своих представлениях, - это помощник по URL.

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

Также - вы можете вернуть представление как переменную, установив для третьего параметра значение true. Смотрите в самой нижней части этой страницы: http://codeigniter.com/user_guide/general/views.html

Пример метода контроллера:

public function method()
{
    $this->load->model('myModel');
    $var = $this->myModel->modelMethod();

    if($var == true) {
        $data['sectionOne'] = $this->load->view('myView', '', true);
    }

    $this->load->view('layout', $data);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...