#php #templates #text
#php #шаблоны #текст
Вопрос:
У меня есть этот код:
class template
{
public $template,$prefix,$replace;
function __construct($template, $prefix)
{
$this->prefix = $prefix;
$this->template = $template;
}
public function SetValue($name, $replace)
{
$this->replace["#".$name."#"] = $replace;
}
public function Tempclude($found)
{
$file = "styles/main/".$found[1].'.html';
if(!file_exists($file))
exit("the template '" . $found[1] . "' wasn't found.");
return file_get_contents($file);
}
public function finish($stream = "normal")
{
if($stream == "folder")
$code = file_get_contents("../styles/main/".$this->template.".html");
else
$code = file_get_contents("styles/main/".$this->template.".html");
$code = preg_replace_callback("@<pb:include="(.*)">@iuU", array($this, 'Tempclude'), $code);
if(is_array($this->replace))
$code = str_replace(array_keys($this->replace), $this->replace, $code);
$code = str_replace("rn", "", $code);
$code = str_replace(" ", "", $code);
echo $code;
}
}
Если я ввожу в шаблон какой-нибудь простой текст, страница становится белой, внутри ничего нет.
В чем проблема?
Комментарии:
1. Попробуйте добавить error_reporting(E_ALL); ini_set(‘display_errors’, 1); к вашему коду в начале и проверьте, в чем ошибка. Я предполагаю, что есть фатальная ошибка, и у вас отключены отчеты об ошибках. Приветствую 😉
2. Попробуйте переименовать свой класс, я думаю, что имя класса не может быть «template», это слово может быть зарезервировано… Другое дело, включили ли вы / требуемый файл с этим классом в свой скрипт? И также может быть проблема с синтаксисом «Ошибка синтаксического анализа: неожиданная ошибка …»
3. Нет, я проиграл; в вашем коде..
4. Я рекомендую вам установить error_reporting и display_errors в вашем файле php.ini — если ошибка произойдет на уровне скрипта, он не сможет «увидеть» ваши попытки настроить их там.
5. Не хочу быть здесь виновником торжества, но почему бы вам не попробовать существующий движок шаблонов, такой как Twig?
Ответ №1:
это не проблема. Попробуйте сделать это:
$template = new template("index", "");
$template->SetValue("notice", "notice:");
$template->finish();
и index.html:
<pb:include="header">
hhh
#Slider#
<pb:include="footer">
его работа.
если вы измените index.html для:
<pb:include="header">
<div id="hh">
hhh
</div>
#Slider#
он возвращает белый список с чем-то внутри.
Ответ №2:
-
Я обнаружил, что константа без кавычек показывает предупреждение (зависит от конфигурации php, WAMP делает)
-
В отредактированном коде, в котором у вас проблема с ошибками, укажите только две константы в начале, все должно работать нормально, протестируйте это следующим образом:
$template = новый шаблон(«index», «»»);
$template->setValue(«notice», «уведомление:»);
$template-> finish(); -
должна быть предоставлена структура папок: styles / main. Эти файлы должны быть найдены внутри main: index.html , footer.html , header.html необходимо предусмотреть
Когда все будет в порядке, пожалуйста, попробуйте удалить все ненужные комментарии или ответы. Спасибо!