Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/48: Рейтинг темы: голосов - 48, средняя оценка - 4.54
Schtrich
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
1

Модель MVC, передача данных из контроллера в вид?

04.04.2012, 06:49. Просмотров 9269. Ответов 32

как правильно организовать передачу данных из контроллера в вид?
как-то у меня в голове не укладывается как это сделать, напр. есть:
контроллер wind.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
 
 $data = array(1,2,3,4,5);
 
 $_POST[veter]="лева";
 $_GET[veter]="права";
 
  require_once('views/windview.php');
// удивительно но если сделать через редирект с передачей get, 
// то будет работать, только это "редирект", а не т.с. подхват файла, 
// поэтому этот вариант сразу отпадает, но я напишу тоже чтобы вы видели что я имел в виду:
// header('Location: views/windview.php?veter=лева');
  exit;
 
 ?>
и вид windview.php

PHP
1
2
3
4
<?php 
 echo "Ветер дует с $_POST[veter]";
 echo "Ветер дует с $_GET[veter]";
 ?>
хотелось бы чтобы и массив возможно было передать, вообще передать любые данные из контроллера в вид.
Естественно в MVC в таком случае форма не совсем то что нужно, я сейчас прекрасно понимаю что полный бред написал, но я это специально сделал чтобы было понятно что не получается.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 06:49
Ответы с готовыми решениями:

Передача данных их контроллера в views
Здравствуйте, МБ вопрос совсем не точный, изучаю ООП и стопарнулся на таком этапе: Класс View...

Передача некоторых данных в шаблон MVC
У меня таблица User с данными: name mail bla bla bla, и мне понадобилось выводить name на каждой...

MVC передача данных между моделью и представлением
Однако Здрасьте! В целях обучения ООП, решил переписать один прект с использованием mvc. В...

spring-mvc передача данных из контроллера в view
у меня возникла проблема. пробую писать жалкое подобие сайта на Java. и мне необходимо передавать...

Передача данных внутри контроллера
Нужно передать массив строк из одного действия контроллера в другое. Вариант с TempData не очень...

32
OnYourLips
506 / 356 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
04.04.2012, 09:17 2
ob_start
extract
1
Alex_pac
1293 / 699 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
04.04.2012, 10:59 3
вид это прежде всего шаблонизатор. и тупой include это не шаблон вида.

так что используй какой либо шаблонизатор для php

xtemplate или smarty

тогда у тебя вид действительно будет отделен от контроллерра. и передача параметров будет на лицо.
1
OnYourLips
506 / 356 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
04.04.2012, 11:58 4
и тупой include это не шаблон вида.
Никто не говорил про тупой include. Я привел пример умного include шаблона с передечей параметров.
0
04.04.2012, 11:58
intwolf
4 / 4 / 0
Регистрация: 05.04.2012
Сообщений: 8
05.04.2012, 20:32 5
А я не вижу смысла тратить время на изучение smarty только ради реализации идеи MVC. Ведь сама по себе идея не диктует нам потребность молиться богу до расшиба лба. Полноценная передача данных из контроллера в вид возможна только в том случае, если мы все данные подключаем и обрабатываем по ходу исполнения одного !!! файла index.php. Отправка формы и переходы по гиперссылкам ведут нас на одну точку входа - index.php. Любая другая идея сразу же ставит нас перед необходимостью использовать базу данных MySQL. То есть еще раз повторю: Весь сайт работает с одной точкой входа index.php и тогда такого вопроса в форум не будет.
1
Schtrich
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
05.04.2012, 21:47  [ТС] 6
да в том-то и дело что пример не могу найти как это реализовать без всяких-там фабрик и smarty, последнее кстати мне вполне доступно оказалось, ничего там сложного, я замахнулся сделать свой MVC уже + используя этот самый смарти, т.е. MVC отдельно, Smarty отдельно, естественно что нихрена у меня не вышло сходу, так как примеров зысь.

пример того как скоординировать модель+вид+контроллер, вот все по идее выводится в index.php, а как этот вид черт знает откуда передать в этот index.php, со всеми его формами и переменными, в kohana это реализовано через фабрику, в smarty, а что в smarty, это же просто шаблонизатор, так что он тут менее "причем".
0
intwolf
4 / 4 / 0
Регистрация: 05.04.2012
Сообщений: 8
06.04.2012, 12:09 7
ОК, вопрос не мальчика но мужа! Ответ тут в разделе Ядро можно уже посмотреть конкретные примеры, читать прийдется много!
2
Schtrich
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
06.04.2012, 13:04  [ТС] 8
спасибо, читать "много" меня никогда не останавливало!
0
intwolf
4 / 4 / 0
Регистрация: 05.04.2012
Сообщений: 8
06.04.2012, 13:09 9
Ну спасибо в карман не положишь, +1 нажми если помог!
1
pilulkin-vlad
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3
26.07.2012, 08:41 10
Система MVC довольно хорошо реализована на Codeignihter

Контроллер:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Page extends CI_Conroller      //Ваш контроллер "Page" расширяет родной CI контроллер
{
    public function __constract()
    {
        parent::__constract();  //Конструктор родительского объекта
        $this->load->model(''); //Загрузка модели в конструкторе
    }
 
 
    public function show() //Функция "show" выдергивает данные из базы
    {
       $data = array(); //Объявление массива
       $data['info'] = $this->page_model->get(); //Дергаем данные с базы
       $this->load->view('page_view',$data); // В этой строке и идет загрузка массива с данными в вид
    }
}
А в виде уже выводите с помощью 'foreach' только уже не через $data, а через $info

В адресной строке "www.вашсайт.ru/index.php/page/show/".
0
Schtrich
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
26.07.2012, 08:46  [ТС] 11
код научись редактировать, я уже давно на kohana пижу, но спс.
0
KOPOJI
26.07.2012, 09:49
  #12

Не по теме:

Цитата Сообщение от pilulkin-vlad Посмотреть сообщение
public function __constract()
{
parent::__constract(); //Конструктор родительского объекта
работает конструктор то, а?)) или даже вернее констрактор :D

0
Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 820
26.07.2012, 10:59 13
каши в голове детектед. причем тут смарти? МВС - это абстракция, паттерн.

Вот вики почитайте - http://ru.wikipedia.org/wiki/MVC#.D0....B0.D1.85_PHP5 вот так и передаются данные в вид.

грубо говоря, контроллер - это связующий элемент между моделью и видом. модель отдает данные, которые контролер и пихает в вид. вид - это просто обертка над данными, которая умеет их выводить в виде HTML через какую-либо шаблонизацию (смарти или native php)
0
KOPOJI
26.07.2012, 13:14
  #14

Не по теме:

Цитата Сообщение от Капитан Очевидн Посмотреть сообщение
Сообщение от pilulkin-vlad
Система MVC довольно хорошо реализована на Codeignihter
Codeignihter использует MVC систему
ник вовсю оправдывает посты :rofl:

0
pilulkin-vlad
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3
26.07.2012, 15:48 15
Писал быстро, ошибся, с каждым бывает, ты вместо того, что - бы языком чесать KOPOJI, предложил бы свой вариант реализации данного вопроса.
0
Schtrich
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
26.07.2012, 15:49  [ТС] 16
Я вот сколько не пишу у меня всегда по-разному контроллер вывода получается.
0
caballero
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
26.07.2012, 19:09 17
А на фига тащить данные через контроллер если вид сам может запросить у модели те данные что ему надо отрендерить
0
Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 820
26.07.2012, 19:14 18
Цитата Сообщение от caballero Посмотреть сообщение
А на фига тащить данные через контроллер если вид сам может запросить у модели те данные что ему надо отрендерить
смотря как это вид сделает. пример можно?
если речь об этом, то возможно

PHP
1
2
3
<html>
<? $userOnject->getUserInfo()->getName() ?>
</html>
но что будет при внештатной ситуации? ошибка на весь экран?
0
caballero
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
26.07.2012, 19:29 19
смотря как это вид сделает. пример можно?
как напишешь так и сделает

но что будет при внештатной ситуации? ошибка на весь экран?
А как тебя контроллер спасет от ошибки?
Капитан очевидность считает чтобы не было ошибок проект нужно тестировать и всякие ситуации коректно обрабатывать.
0
Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 820
26.07.2012, 19:35 20
Цитата Сообщение от caballero Посмотреть сообщение
А как тебя контроллер спасет от ошибки?
элементарно.
PHP
1
try { $userdata = $userOnject->getUserInfo()} catch (Exception $e) { $userdata = null;}
в вид отдаем только $userdata. Вид может проверить $userdata и если там ничо нет, то красиво показать пользователю сообщение об ошибке:

PHP
1
2
3
4
5
<? if (!$userdata): ?>
   <p>Пардон</p>
<? else: ?>
    Имя пользователя: <?=$userdata->getName()?>
<? endif; ?>
0
26.07.2012, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 19:35

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

Передача данных между методами контроллера
Доброго времени суток. Ситуация следующая: в контроллере есть вот такие вот экшны public...

Передача данных из CKEditor в метод контроллера
В общем код представления: &lt;html&gt; &lt;head&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru