Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как подгрузить доп. блоки на mvc

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
imper
Отправлено: 23 Ноября, 2014 - 20:38:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


Помог: 2 раз(а)

[+]


Всем добрый вечер, помогите пожалуйста уже неделю корплю читал, разбирал другие движки на mvc, так и не пришла в голову мысль как всё правильно сделать.

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

Допустим я вызываю страницу. http://domen[dot]ru/all_posts
вызывается контроллер all_posts

вот код контроллера, модели, вида - all_posts

PHP:
скопировать код в буфер обмена
  1.  
  2. class Controller_all_posts extends Controller
  3. {
  4.  
  5.     function __construct()
  6.     {
  7.         $this->model = new Model_all_posts();
  8.         $this->view = new View();
  9.     }
  10.    
  11.     function action_index()
  12.     {
  13.         $data = $this->model->get_data();              
  14.         $this->view->generate('view_all_posts.php', 'view_template.php', $data);
  15.     }
  16. }
  17.  



PHP:
скопировать код в буфер обмена
  1. class Model_all_posts extends Model
  2. {
  3.    
  4.     public function get_data()
  5.     {
  6.         $sql_all_post = "
  7.        SELECT `id`,`name_document`
  8.        FROM `content`
  9.        WHERE 1=1 ORDER BY `date_post` DESC LIMIT 15";
  10.        
  11.        
  12.        
  13.        
  14.           return array(
  15.                 'main_template'=>array(
  16.                 'title' => 'Все сатьи',
  17.                 'description' => 'бла бла'
  18.                 ),
  19.                 $this->db->prapare_pdo($sql_all_post,array()),
  20.                  
  21.         );
  22.        
  23.        
  24.     }
  25. }




ну полностью будет лишним вот кусочек

CODE (html):
скопировать код в буфер обмена
  1. <h1>Все статьи <?php echo count($data[0]); ?></h1>

Прикреплено изображение (Нажмите для увеличения)
Безымянный.png


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Bio man
Отправлено: 23 Ноября, 2014 - 22:52:50
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Я бы для такой задачи реализовал механизм виджетов.
Вот абстрактный кусок вызова виджета из view файла:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. NewsWidget::create([
  4.   'random' => true,
  5.   'limit' => 20,
  6. ]);
  7. ?>
  8.  

Виджет комментов мог бы выглядеть примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. CommentsWidget::create([
  4.   'commentsFor' => $this, // $this подразумевает объект текущего контроллера. Если $this не указывает на контроллер, то получаем ссылку на контроллер любым удобным способом
  5. ]);
  6. ?>
  7.  

Зачем передавать $this (или ссылку на контроллер)? Затем, что бы знать для чего выводить комменты.
(Добавление)

P.S. Рисунок зачёт! Радость
 
 Top
imper
Отправлено: 24 Ноября, 2014 - 10:59:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


Помог: 2 раз(а)

[+]


Bio man, г*вно вопрос, сделать я могу почти всё что угодно, но охото сделать это не коряво, допустим класс я создал, всю логику, выборку из базы, весь вид делать в этом же классе?


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Bio man
Отправлено: 24 Ноября, 2014 - 12:05:55
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




В самом виджете обработка и передача данных моделе, и отрисовка шаблона. Вся бизнес логика в моделе, как обычно
(Добавление)
Считай виджет триадой мвц, отрисовка шаблона через тот же вью компонент
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB