Контроллер нагрузки CodeIgniter из вида

Есть ли способ загрузить контроллер из представления?

Вот что я рад .. Я хочу использовать один вид несколько раз, но это представление загружается отдельным контроллером, который дает представление, информацию из db.So, потому что эта информация из модели я не могу просто установить $this-load->view(); и т. д. Есть ли способ сделать это, или у него есть лучший способ?

Related of "Контроллер нагрузки CodeIgniter из вида"

Я думаю, что многие сайты сталкиваются с подобными проблемами, в том числе с тем, что я работаю над тем, что загружает один и тот же контент в боковую панель практически на каждую страницу сайта. Я реализовал это с помощью комбинации библиотеки и помощника:

  1. Поместите логику данных в библиотеку (мой называется common.php). В дополнение к взаимодействию с базой данных вы можете захотеть, чтобы библиотека хранила данные в локальной переменной, если вы хотите ссылаться на нее несколько раз при одном загрузке.
     public function get_total_items() { if ($this->_total_items === NULL) { $row = $this->ci->db->query("SELECT COUNT(*) FROM items")->row(); $this->_total_items = $row[0]; } return $this->_total_items; } 
  2. Создайте помощника для загрузки библиотеки. (Не загружайте библиотеки в представление!) У меня есть MY_text_helper, который загружает библиотеку и возвращает данные:

     function total_items() { $CI =& get_instance(); return $CI->common->get_total_items(); } 

  3. Вызовите вспомогательную функцию из представления.

     <p> Total items: <?php echo total_items(); ?> </p> 

Проще говоря, вы не можете и не должны загружать контроллер из представления. Это печально, я понимаю ваше разочарование, потому что вы хотите повторно использовать логику моделирования / действия в контроллере через множественные представления.

Существуют различные способы сделать это;

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

  2. Используйте контроллер как «основной контейнер» и extend его на любую логику, в которой вы нуждаетесь. Таким образом, вы в основном используете контроллер в качестве шаблона, который извлекает данные из модели, загружает соответствующее представление.

MVC не работает таким образом … Просто повторите использование модели – вот почему она отделена от контроллера. Если это не соответствует вашим потребностям, вы должны, вероятно, реализовать библиотеку, которая выполняет логику.

Я бы использовал библиотеку .

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

просто сделайте это, если ваш контроллер с именем controller1 поставит ссылку в поле зрения точно так же

http://your-site.com/index.php/controller1/

если вы хотите, чтобы определенная функция добавила его в ваш URL-адрес

http://your-site.com/index.php/controller1/myfunction

это оно