Есть ли способ загрузить контроллер из представления?
Вот что я рад .. Я хочу использовать один вид несколько раз, но это представление загружается отдельным контроллером, который дает представление, информацию из db.So, потому что эта информация из модели я не могу просто установить $this-load->view();
и т. д. Есть ли способ сделать это, или у него есть лучший способ?
Я думаю, что многие сайты сталкиваются с подобными проблемами, в том числе с тем, что я работаю над тем, что загружает один и тот же контент в боковую панель практически на каждую страницу сайта. Я реализовал это с помощью комбинации библиотеки и помощника:
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; }
Создайте помощника для загрузки библиотеки. (Не загружайте библиотеки в представление!) У меня есть MY_text_helper, который загружает библиотеку и возвращает данные:
function total_items() { $CI =& get_instance(); return $CI->common->get_total_items(); }
Вызовите вспомогательную функцию из представления.
<p> Total items: <?php echo total_items(); ?> </p>
Проще говоря, вы не можете и не должны загружать контроллер из представления. Это печально, я понимаю ваше разочарование, потому что вы хотите повторно использовать логику моделирования / действия в контроллере через множественные представления.
Существуют различные способы сделать это;
Повторно используйте модели. Ваши модели должны быть очень просты в выборе данных и должны быть гладкими, но если вы делаете то же самое снова и снова, это кажется глупым. В таком случае…
Используйте контроллер как «основной контейнер» и extend
его на любую логику, в которой вы нуждаетесь. Таким образом, вы в основном используете контроллер в качестве шаблона, который извлекает данные из модели, загружает соответствующее представление.
MVC не работает таким образом … Просто повторите использование модели – вот почему она отделена от контроллера. Если это не соответствует вашим потребностям, вы должны, вероятно, реализовать библиотеку, которая выполняет логику.
Я бы использовал библиотеку .
Таким образом, вы можете завершить извлечение данных в многоразовом пакете, который вы можете вызвать с любого контроллера, который вам нравится.
просто сделайте это, если ваш контроллер с именем controller1 поставит ссылку в поле зрения точно так же
http://your-site.com/index.php/controller1/
если вы хотите, чтобы определенная функция добавила его в ваш URL-адрес
http://your-site.com/index.php/controller1/myfunction
это оно