我有一个Elseif语句,它获取模板名称并包含模板PHP文件,其中包含一个大型数组,它会在页面上输出结果。
$template = str_replace("-","_","{$_GET['select']}"); if ($template == "cuatro"){ include("templates/cuatro.php"); echo $page_output; } elseif ($template == "ohlittl"){ include("templates/ohlittl.php"); echo $page_output; } else { echo "Sorry, template not found."; } $page_output = "You've chosen $template_select[0].";
从那里,我收到通知说它找不到$ page_output变量。
注意:未定义的变量:第10行的C:\ ... \ template.php中的page_output
如果我把变量放在包含的文件中,它可以找到它。但我正试图让这个变量保留在这个页面上。我该如何完成?
答案 0 :(得分:3)
您在回复之后定义$page_output
。当你调用echo $page_output
时,它还不存在。
尝试:
$page_output = "You've chosen {$template_select[0]}.";
$template = str_replace("-","_","{$_GET['select']}");
if ($template == "cuatro"){
include("templates/cuatro.php");
echo $page_output;
} elseif ($template == "ohlittl"){
include(dirname(__FILE__) . "/templates/ohlittl.php");
echo $page_output;
} else {
echo "Sorry, template not found.";
}
虽然我不知道你是如何设置$template_select
的,如果你知道它总会说同一个模板名称?
我相信另一种方法可以实现您的目标:
$templates = array('cuatro', 'ohlittl');
$selectedTemplate = strtolower(str_replace("-","_",$_GET['select']));
foreach ($templates as $template)
{
if ($template === $selectedTemplate) {
include(dirname(__FILE__) . "/templates/" . $template . ".php");
echo "You've chosen {$template}.";
}
}
答案 1 :(得分:0)
您的模板
echo
)$page_output
)或局部变量中(包含在函数内部发生,但对模板透明)。您似乎想要选项2,但您的模板未定义任何$page_output
变量。您还可以直接在模板中输出文本,缓冲输出,并将其分配给$page_output
:
ob_start();
include "file.php.inc";
$page_output = ob_get_contents();
ob_end_clean();