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
Форумы портала PHP.SU :: Версия для печати :: Вывод данных в MVC модели
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Вывод данных в MVC модели

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

1. alexy73 - 08 Августа, 2014 - 14:44:50 - перейти к сообщению
Здравствуйте!

Помогите разобраться. Сделал сайт по MVC схеме. Странички хранятся в базе данных. В класс View передаются имя шаблона(сайт двуязычный) и собственно страничка.
CODE (htmlphp):
скопировать код в буфер обмена
  1. class View
  2. {
  3.        
  4.         function generate($template_view, $content)
  5.         {      
  6.                if(is_array($content)) {
  7.        
  8.                 extract($content);
  9.                        
  10.                 }
  11.              include 'application/views/'.$template_view;
  12.  
  13. }


Затем переменные подставляются в шаблон:

template.php

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title><?=$article_title?></title>
  6. </head>
  7. <body>
  8. <?=$article_body?>
  9. </body>
  10. </html>
  11.  


Все работало прекрасно. Но потребовалось прикрутить динамически изменяемые цены, которые берутся тоже из базы. Добавил переменную $price, в которой содержится выборка.
CODE (htmlphp):
скопировать код в буфер обмена
  1. class View
  2. {
  3.        
  4.         function generate($template_view, $content, $price)
  5.         {      
  6.  
  7.  
  8. }


Не могу сообразить, как вывести данные в табличной форме в шаблоне. Пытался в переменной $article_body организовать внутреннюю переменную, но в шаблоне вывод данных организован командой echo. Поэтому внутренняя переменная выводится как обычный текст.
2. esterio - 08 Августа, 2014 - 14:46:37 - перейти к сообщению
1. переменная $price ничего не делает, кроме как существует
2. так делять нельзя ибо view ничего не должен знать о каких-то там ценах, должен быть единый интерфейс для всех
3. alexy73 - 08 Августа, 2014 - 15:01:15 - перейти к сообщению
Извиняюсь, случайно добавил не дописав
4. alexy73 - 08 Августа, 2014 - 17:10:18 - перейти к сообщению
Сделал сам. Только решение мне не очень нравится. Переменную $article_body я загоняю во временный файл contentTemp.


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. function generate($template_view, $content, $price)
  4.         {      
  5.  
  6.                 if(is_array($content)) {
  7.        
  8.                 extract($content);
  9.                        
  10.                 }
  11.  
  12.                 file_put_contents('contentTemp', $article_body, FILE_APPEND );
  13.                
  14.                 include 'application/views/'.$template_view;
  15.  
  16.         }
  17. }


а в шаблоне использую include
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title><?=$article_title?></title>
  6. </head>
  7. <body>
  8.  
  9.                         <?php include 'contentTemp';
  10.                        unlink('contentTemp');
  11.                        ?>
  12.  
  13. </body>
  14. </html>
  15.  


Вот теперь все работает как надо. Не нравится 2 вещи:

1. Необходимость преобразования переменной (содержание страницы с динамической таблицей) в файл
2. Почему-то криво работает функция file_put_contents только с флагом FILE_APPEND. Без флага отказывается записывать переменную в файл.

Может кто-нибудь подскажет идею лучше?
5. tato - 11 Августа, 2014 - 01:13:23 - перейти к сообщению
Вся идея здесь:


Как вызывается generate? Место где в него подставляется $article_body?

 

Powered by ExBB FM 1.0 RC1