Как я могу передать переменные из вида в контроллер? - PullRequest
0 голосов
/ 14 июня 2011

У меня есть представление Codeigniter, которое выполняет некоторую обработку и создает некоторые переменные, которые мне нужны в моем контроллере.

Как я могу получить доступ к переменным, созданным в моем представлении, с моего контроллера? Возможно ли это сделать?

Я могу передать переменные из контроллера в представление, Могу ли я передать переменные обратно из представления в контроллер?
Просто чтобы сделать вещи более понятными. У меня есть главный контроллер, который принимает несколько просмотров и формирует полную страницу. На этой полной странице мне просто нужно передать некоторые данные. Эти данные снова, не плачь и не вините меня в этом, обрабатываются в представлении. Теперь мне нужно настроить метаданные, ключевые слова заголовка и т. Д. Для каждой страницы, которая задается методом основного контроллера setPageMetaData, и она принимает пару ключ-значение. Для некоторых страниц легко setPageMetaData внутри контроллера, но в одном конкретном случае заголовок и ключевые слова генерируются некоторой обработкой в ​​представлении. Мне нужна эта информация в моем контроллере. Мой вопрос был вне зависимости от этого конкретного случая, могу ли я передать переменные из View в мой контроллер? Это вообще возможно? Я мог бы добавить, "это рекомендуется?" заработать аплодисменты.

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

Думайте об этом так:

  • Контроллер = Ввод (включая URL)
  • Модель = Обработка (общение с контроллером)
  • Просмотр = Вывод (что видят пользователи после обработки данных)

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

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

3 голосов
/ 25 января 2013

Вы можете использовать сегменты URI или Js, Ajax, чтобы помочь. Просто, если вы используете CRUD, это дает нагрузку на контроллер для выполнения кода в моделях.

1 голос
/ 14 июня 2011

В Code Igniter, если вы пытаетесь передать что-то вне поля зрения обратно контроллеру, вы делаете что-то ужасно , ужасно , ужасно неправильно.

Единственный сценарий для этого - это если ваш взгляд сам выполняет некоторую обработку.

Повторяйте за мной;
I Раджендра Прасад Панчат обещаю, что буду никогда Выполнить какую-либо обработку в моих представлениях

Это полностью нарушает цель использования такой инфраструктуры, как Code Igniter.

Цель представления предназначен для вывода ваших уже обработанных данных в виде веб-страницы.

-
Не стесняйтесь размещать ваш код, и мы сообщим вам, где вы идете не так.

...