function view($inc){
ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
когда я подключаю файл
$chat = view('components/chat/router');
У меня переменные из вне не попадают внутрь буфферизированного файла.
т.е. у меня подключены файлы с функциями, а внутри буфферизирующегося файла к ним доступа нет. Как с этим бороться?
Еще раз подключать функции внутри блока? Или можно придумать какую нибудь другую конструкцию?
Спустя 9 минут, 4 секунды (8.03.2012 - 19:17) Visman написал(а):
function view($inc, $array_of_vars = NULL){
if (!empty($array_of_vars)) {
extract($array_of_vars);
}
ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
Спустя 1 минута, 29 секунд (8.03.2012 - 19:18) Winston написал(а):
function view($inc, $argv = array()){
extract($argv);
ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
А вызывать таким образом
$vars = array('title' => 'Тайтл', 'text' => 'text', 'other' => 'что то еще');
$chat = view('components/chat/router', $vars);
// А в шаблоне уже можешь выводить переменные так
echo $title;
echo $text;
echo $other;
Спустя 4 минуты, 14 секунд (8.03.2012 - 19:22) ruzarh написал(а):
Вот в контексте
теперь файл components/chat/router.php который я подключаю, в нем переменная $var не присутствует.
У меня снаружи много всего определено, а внутри блоков они мне тоже нужны.
Да и можно как нибудь массово, просто и функции подключенные он тоже не видит.
$var = 'трям';
$chat = view('components/chat/router');
теперь файл components/chat/router.php который я подключаю, в нем переменная $var не присутствует.
У меня снаружи много всего определено, а внутри блоков они мне тоже нужны.
Да и можно как нибудь массово, просто и функции подключенные он тоже не видит.
Спустя 2 минуты, 43 секунды (8.03.2012 - 19:25) Winston написал(а):
ruzarh
Ты мой код вообще смотрел?
Ты мой код вообще смотрел?
Спустя 1 минута, 16 секунд (8.03.2012 - 19:26) Visman написал(а):
Почему это он функции не видит?
А переменные массово без указания переменных - нельзя.
А переменные массово без указания переменных - нельзя.
Спустя 1 минута, 12 секунд (8.03.2012 - 19:28) ruzarh написал(а):
Winston
Да спасибо смотрел, но просто если все что надо я буду в него запихивать, у меня уйдет время больше чем я просто без буфферизации костыль какой нибудь сделаю.
Visman
Незнаю, но если файлы подключаются в этом буффере то он все видит, а если в буффере еще один мини буфер сделать то в нутри второго первый не видит. И если вообще вне буффера файл подключить, в буфферах он не видит, это и функций касается.
Да спасибо смотрел, но просто если все что надо я буду в него запихивать, у меня уйдет время больше чем я просто без буфферизации костыль какой нибудь сделаю.
Visman
Незнаю, но если файлы подключаются в этом буффере то он все видит, а если в буффере еще один мини буфер сделать то в нутри второго первый не видит. И если вообще вне буффера файл подключить, в буфферах он не видит, это и функций касается.
Спустя 1 минута, 32 секунды (8.03.2012 - 19:29) johniek_comp написал(а):
посоны че за extract? и что он там делает?
Спустя 3 минуты, 9 секунд (8.03.2012 - 19:32) Visman написал(а):
Цитата (ruzarh @ 9.03.2012 - 00:28) |
но просто если все что надо я буду в него запихивать, у меня уйдет время больше чем я просто без буфферизации костыль какой нибудь сделаю. |
Значит у тебя подход не правильный для этого действия.
Цитата (johniek_comp @ 9.03.2012 - 00:29) |
посоны че за extract? и что он там делает? |
гугл - php extract
Спустя 3 минуты, 45 секунд (8.03.2012 - 19:36) ruzarh написал(а):
Подход как раз верный, отделять разные выводы блоков друг от друга, но придется без буффера это делать вот и все(( Уже час копаюсь и ни какого результата, вот и на форуме немного не то предалагают((.
Спасибо всем, если найду решение то отпишусь.
Спасибо всем, если найду решение то отпишусь.
Спустя 14 часов, 40 минут, 4 секунды (9.03.2012 - 10:16) ruzarh написал(а):
Вообщем не нашел я грамотного решения, но вот так все заработало
Просто в коде. Спасибо всем за участие))
ob_start();
include CMS_ROOT . 'components/chat/router.php';
$chat = ob_get_contents();
ob_end_clean();
Просто в коде. Спасибо всем за участие))
_____________
Не портите мои нервные клетки, так как в них живут нервные тигры!