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 :: Версия для печати :: ob_start and require
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » ob_start and require

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

1. NOCaut - 19 Ноября, 2014 - 12:15:07 - перейти к сообщению
Не получается получить даные.
Вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. ob_start();            
  3.     require(VIEW.html);
  4.     $request = ob_get_contents();      
  5.     ob_end_clean();    
  6.     var_dump($request);
  7.     return $request;
  8.  


view.html
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <html>
  4. <title><?php echo $title; ?></title>
  5. <head></head>
  6. <body></body>
  7. </html>
  8.  
2. esterio - 19 Ноября, 2014 - 12:21:32 - перейти к сообщению
NOCaut пишет:
require("VIEW.html");

NOCaut пишет:
return $request;

это функция?
3. OrmaJever - 19 Ноября, 2014 - 12:34:44 - перейти к сообщению
NOCaut пишет:
    require(VIEW.html);

для нормальных людей кавычки придумали
4. NOCaut - 19 Ноября, 2014 - 12:39:51 - перейти к сообщению
Спасибо. ето скорее невнимательность при переносе кода на форум из робочой модели
Но на суть не влияет.
И да ето функция.
(Добавление)
так работает:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <title><?php echo $title; ?></title>
  4. <head>
  5.  
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?php
  11.         echo $title;
  12. ?>
  13.  
  14. </body>
  15. </html>
  16.  
5. esterio - 19 Ноября, 2014 - 13:07:15 - перейти к сообщению
если функция, то откуда там возьмется переменная $title?
как пример
PHP:
скопировать код в буфер обмена
  1.  
  2. $title = 'Some Title';
  3.  
  4. function Foo()
  5. {
  6.    var_dump($title); // null
  7. }
  8.  
  9. Foo();


вам нужно передать переменную в функцию
(Добавление)
также стоит напомнить что у unix-подобных ОС регистр файла имеет значения. File.txt и file.txt разные файлы.
6. NOCaut - 19 Ноября, 2014 - 15:08:33 - перейти к сообщению
нет. там все верно. title заполняетс в другом php файле.
проблема. в том что буфер пуст.
7. Sail - 19 Ноября, 2014 - 15:36:26 - перейти к сообщению

Ага, функция... Браво Обычный подключаемый файл.
Странность, NOCaut в том, что Вы html-код включаете внутри тегов <?php ?>, просто как часть скрипта...
И к чему игры с буфером?
8. esterio - 19 Ноября, 2014 - 15:57:52 - перейти к сообщению
Sail
так делают многие шаблонизаторы (тот же Yii например). только ТС не знает про область видимости переменных.

PHP:
скопировать код в буфер обмена
  1. function template($template, array $data = array())
  2.     {
  3.             if(!is_file($template))
  4.                     throw new Exception('Template '.$template.' not found');
  5.                    
  6.             extract($data);
  7.            
  8.             ob_start();
  9.             include($template);
  10.             return ob_get_clean();
  11.     }


уже примерно раз десять на этом форуме писал даную функцию

 

Powered by ExBB FM 1.0 RC1