Codeigniter Inter Controller Communication - PullRequest
2 голосов
/ 14 октября 2011

Я новичок в MVC, CodeIginter.Вместо того чтобы упростить задачу, нужно написать много кода для простого приложения.Это может происходить, потому что я новичок.Так что у меня мало путаницы по поводу этой вещи.Приветствуется любая помощь.
1) Методы, написанные на одном контроллере, недоступны на других классах контроллеров.Я должен написать новую функцию для той же функциональности.

2) Чтобы создать панель администрирования веб-сайта (back-end) в панели no mvc, мы обычно создаем ее в новой папке.Это возможно в CodeIgniter?Если нет, то как насчет администратора (бэк-энда) ??

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Давайте попробуем прояснить некоторые ваши сомнения по этому поводу.

1) Вызов метода контроллера из другого контроллера невозможен, и, кстати, это имеет какое-то значение.

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

Затем модель передает результат этой разработки контроллеру, который, в свою очередь, решает, какой вид передать эти результаты.

Представление, в конце концов, структурировано так, чтобы получать эти данные и отображать их.

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

Если вы обнаружите, что через несколько секунд у вас будут одинаковые функции, подумайте дважды:

  1. Что такое функциональность?Вы имеете в виду что-то вроде «показывать сообщения» в «архиве» контроллера и «показывать сообщения» в «новостях» контроллера?они вряд ли имеют одинаковую функциональность;возможно, они могут делиться представлениями или моделями, но это все.
  2. Для функций, которые не относятся к URL-адресам, но требуют некоторой дальнейшей проработки (что может быть неправильно делать в моделях) и тем не менее вызываются вконтроллер, у вас есть библиотека вместоПодумайте о библиотеке «form_validation», которая вызывается в методе контроллера, но имеет свои специфические (и инкапсулированные) функции.Или библиотека "сеанса" или библиотека "аутентификации"

2) Для создания панели администратора проще всего: создать контроллер "администратора" (который затем доступен для www.mysite.com / index.php / admin) и поместите все административные действия в его методы: create_page (), edit_page (), manage_users (), что угодно.Чтобы люди не могли получить к нему свободный доступ, вам нужно создать систему аутентификации, которая в простейшем и простом понимании может быть проверкой того, установлен сеанс или нет (может быть, проверка выполняется во время __construct ()).

Но вы можете найти хорошие библиотеки Auth, которые уже созданы, такие как Ion Auth или Tank Auth (2 наиболее популярные, насколько мне известно)

Надеюсь, теперь все немного яснее.См. Также комментарий Interstellar_Coder к этому ответу, если вы заинтересованы в модульном подходе HMVC.

1 голос
/ 14 октября 2011

1) Методы, записанные в одном контроллере, недоступны в других классах контроллеров. Я должен написать новую функцию для той же функциональности.

Что такое функциональность? Возможно, вам следует написать библиотеку / помощник, логика контроллера должна быть ограничена потоком запросов или чем-то еще, но не слишком сложной. Для этого поместите функциональные возможности в модель или, если это более общее, в библиотеку / помощник.

2) Чтобы создать панель администрирования веб-сайта (back-end) в панели no mvc, мы обычно создаем ее в новой папке. Это возможно в CodeIgniter? Если нет, то как насчет администратора (бэк-энда) ??

Не понимаю, не могли бы вы подробнее рассказать?

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