Компонентная модель [Smarty]

  • Автор темы Кирпичшн
  • Дата начала

Кирпичшн

Guest
Компонентная модель [Smarty]

В пятьнадцатом Инсайде была статья "Смарти -- не только шаблоны". Стало интересно -- захотелось попробовать )) Тем более что с шаблонкой не давно познакомился )) Написал пример. Не работает -- в smarty_fuction_component при проверке is_file выдает, что компонента нет... Казалось бы ясно где ошибка и что с ней делать... После суток все возможных извращений и тестов -- результат ноль.

Может быть все таки ошибка в другом месте?

index.php :
PHP:
<?php // 12:14 24.11.2005

define('DIR_SMARTY', '_smarty');
define('DIR_CACHE', '_cache');
define('DIR_CONGIGS', '_configs');
define('DIR_TEMPLATES', '_templates');
define('DIR_COMPILE', '_templates_c');

require_once DIR_SMARTY.'/Smarty.class.php';
$smarty = new Smarty;

$smarty->template_dir = $DOCUMENT_ROOT.'/'.DIR_TEMPLATES;
$smarty->compile_dir = $DOCUMENT_ROOT.'/'.DIR_COMPILE;
$smarty->config_dir = $DOCUMENT_ROOT.'/'.DIR_CONGIGS;
$smarty->cache_dir = $DOCUMENT_ROOT.'/'.DIR_CACHE;
$smarty->force_compile = true;
$smarty->caching = false;

$smarty->display('default.tpl');

?>
function.component.php
PHP:
<?php // 12:44 24.11.2005

function smarty_function_component($param, &$smarty) {
	
	if (empty($param['name'])) {
		
		$param['name'] = 'default';
		
	}
	
	if (is_file('_components/'.$param['name'].'component.php')) {
		
		require_once '_components/'.$param['name'].'component.php';
		
	} else {
		
		echo "КОМПОНЕНТ НЕ НАЙДЕН";
		
	}
	
}

?>
 

zarus

Хитрожопый макак
1. $DOCUMENT_ROOT - это что за покемон?
$_SERVER['DOCUMENT_ROOT'] и только, и отключить глобальные переменные.

2. is_file('_components/'.$param['name'].'component.php'
Относительные пути - вечная проблема. Лучше через абсолютные пути
is_file($_SERVER['DOCUMENT_ROOT'].'/path/to/smarty/_components/'.$param['name'].'component.php'
 

Кирпичшн

Guest
Я использую абсолютные пути. Это тут просто для примера написал.
 

kvf77

Red Devil
Кирпичшн
чуствую мне надо уже писать вторую часть статьи с примерами :)

тут тебе правильно сказали, у тебя проблема с путями, прочитай FAQ про относительные и абсолютные пути
 

Кирпичшн

Guest
* пошол дальше возится с путями ))

-~{}~ 30.11.05 02:39:

Я ж говорю не в пути дело )) Дело в имени файла ))
default.component.php а у меня $param['name'].'component.php'
Заметили да?

Прошу прощения за отнятое время ))
Топик наверное можно убить за безсмысленостью ))
 
Сверху