Intereting Posts
Проверка ссылок с помощью Multi-Curl Расширьте класс исключений Codeigniter для добавления настраиваемого метода Как рассчитать разницу между двумя датами с помощью PHP? Создание многомерного массива из таблицы базы данных PHP textarea сохраняет дополнительные новые строки в MySQL DB Как исправить проблему невидимого пространства в PHP? Есть ли функция для извлечения «столбца» из массива в PHP? Предупреждение о безопасности PhpMyAdmin для файлов конфигурации Вставка нескольких строк в таблицу с помощью PHP Нажмите кнопку копирования в буфер обмена, используя jQuery конфликты с несколькими формами: codeigniter conflict Содержимое ответа должно быть строкой или объектом, реализующим __toString (), \ "boolean \". Как хранить европейскую валюту в MySQL? Каков наилучший способ взглянуть на экземпляр (объект) класса PHP, чтобы увидеть все доступные ему публичные свойства и методы? Почему PHP foreach один раз увеличивает указатель своего массива (только)?

Многочисленные контроллеры Codeigniter и многие методы?

У меня есть сайт, на котором есть много страниц, которые расположены в корне (например, /contact , /about , /home , /faq , /privacy , /tos и т. Д.). Мой вопрос в том, должны ли эти все быть отдельными контроллерами или одним контроллером со многими методами (например, contact , about , index в контроллере main.php )?

ОБНОВЛЕНИЕ: Я только понял, что методы, которые находятся в контроллере по умолчанию, не отображаются в URL-адресе без контроллера по умолчанию (т. Е. Main main/contact будет автоматически маршрутизироваться в /contact если main является контроллером по умолчанию). Поэтому вам нужно будет идти по маршрутам и переопределять каждую page .

Related of "Многочисленные контроллеры Codeigniter и многие методы?"

Если все это только страницы, я бы рекомендовал поместить их в один контроллер. Обычно я помещаю статические страницы, подобные этому, в контроллер «страниц» и помещаю маршруты для каждой статической страницы в обход «/ страниц» в своих URL-адресах.

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

  class someController{ function cotact(){ print $this->getContentFromModel(1); } function about(){ print $this->getContentFromModel(2); } function home(){ print $this->getContentFromModel(3); } private function getContentFromModel($id){ return $this->someContentModel->getContentById($id); } } 

(вместо print вы должны использовать load view )

См. В моем примере, как все функции используют одну и ту же функцию getContentFromModel для совместного использования одной и той же функциональности.

но это только один случай, могут быть и те случаи, когда мой пример может быть плохим для …

в приложении / config / routes.php

 $route['contact'] = "mainController/contact"; $route['about'] = "mainController/about"; $route['home'] = "mainController/home"; $route['faq'] = "mainController/faq"; $route['privacy'] = "mainController/privacy"; 

и вы должны добавить все эти методы в mainController.php

Вы также можете сохранить содержимое страниц в своей базе данных и запросить его. Например, вы можете отправить URL-адрес в качестве ключевого слова для определения содержимого страницы

  $route['contact'] = "mainController/getContent/contact"; $route['about'] = "mainController/getContent/about"; $route['home'] = "mainController/getContent/home"; $route['faq'] = "mainController/getContent/faq"; $route['privacy'] = "mainController/getContent/privacy"; 

в этом случае вам нужно создать только один метод с именем «getContent» в контроллере «mainController», и этот метод будет выглядеть примерно так:

 class mainController extends CI_Controller { public function getContent($param) { $query = $this->db->get_where('mytable', array('pageName' => $param)); // then get the result and print it in a view } } 

Надеюсь, что это работает для вас

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

Я написал сообщение в блоге об организации методов контроллера CodeIgniter, которые могут быть полезны для вас. Посмотрите здесь: http://caseyflynn.com/2011/10/26/codeigniter-php-framework-how-to-organize-controllers-to-achieve-dry-principles/