2009-12-10 2 views
1

Есть ли способ, которым я могу предварительно обработать скрипт вида PHP, не используя конкретную среду MVC?как предварительно обработать представление PHP MVC без использования рамки?

В основном я хочу отобразить представление и передать его как строку HTML в другое представление. Представление, которое я пытаюсь сделать, имеет некоторые ссылки, такие как $ this-> rows, и, конечно же, мне нужно будет добавить значения этих ссылок на скрипт перед генерированием HTML.

Возможно ли это?

+0

Возможно, вы захотите предоставить дополнительную информацию, такую ​​как структура MVC. –

+0

@justin, он хочет реализовать собственные шаблоны mvc, поэтому ему нужна техника для захвата выходного буфера ... –

+0

Да, я намеренно упустил структуру MVC (которая, случается, Joomla). Мне интересно узнать, могу ли я сделать это в рамках агностической манеры, что, я думаю, будет очень круто, потому что тогда я могу потенциально переработать виды из других фреймворков. – Tony

ответ

4

Да, это вполне возможно. Вы захотите использовать output buffering, чтобы убедиться, что начальный вид не отображается, а затем сохраняет эти представления в переменной.

ob_start(); 
include ('/path/to/file.php'); 
$contents = ob_get_contents(); 
ob_end_clean(); 
+0

Но как бы добавить данные во включенный файл перед его рендерингом? В включенном файле просмотра есть ссылки, такие как $ this-> rows, которые я хочу изменить. – Tony

+0

Я предполагаю, что я могу добавить переменные в свой контекст, прежде чем включить свое представление, но по какой-то причине ob_end_clean() не «молча отбрасывает содержимое моего буфера». Как только я включаю файл вида, он отправляется на вывод, независимо от того, находится ли он в буфере или снаружи. – Tony

+0

Ну, коррекция, ob_end_clean(), молча отбрасывает содержимое моего буфера, если содержимое не является включенным, но независимо от него. Любой способ предотвратить это? – Tony

0

Способ сделать это зависит от используемой структуры.

Но это можно сделать с помощью PHP, просто используя вложенные вложения.

Например

page.php

<?php include(HEADER) ?> 

<?= $var ?> 

<?php include(FOOTER) ?> 

Все переменные, доступные для page.php будут доступны взглядам верхнего и нижнего колонтитула, а также.

+0

Я использую Joomla. Проблема в том, что мне нужно предварительно обработать page.php и превратить его в строку. И мне нужно изменить значение $ var, прежде чем я это сделаю. Итак, если файл был объектом, я хотел бы что-то вроде этого: page.php-> var = "foo" - а затем получить визуализацию страницы в строку с присвоенными значениями. – Tony