Php HTML_模板_IT中子块的顺序-这有关系吗?
我正在开发简单的基于php的调查生成器。它所做的只是从DB获取调查问卷,并在页面上创建适当的表单。对于模板,我正在使用PEAR HTML_Template_IT(1.3),我偶然发现了一个有趣的“特性” 假设我们有一个嵌套结构如下的模板:Php HTML_模板_IT中子块的顺序-这有关系吗?,php,html,templates,block,pear,Php,Html,Templates,Block,Pear,我正在开发简单的基于php的调查生成器。它所做的只是从DB获取调查问卷,并在页面上创建适当的表单。对于模板,我正在使用PEAR HTML_Template_IT(1.3),我偶然发现了一个有趣的“特性” 假设我们有一个嵌套结构如下的模板: <!-- BEGIN questionnaire --> <!-- BEGIN question.T --> {question} <input type="text" .... /> <!-- END
<!-- BEGIN questionnaire -->
<!-- BEGIN question.T -->
{question} <input type="text" .... />
<!-- END question.T -->
<!-- BEGIN question.R -->
{question}
<!-- BEGIN question.R.answer -->
<input type="radio" .... /> {option}
<!-- END question.R.answer -->
<!-- END question.R -->
<!-- END questionnaire -->
{问题}
{问题}
{option}
正如您可以在immagine中看到的,对于不同类型的输入字段,我有类似的块
现在有趣的事情来了。当我试图显示字段时,我注意到它们以一种奇怪的方式显示。首先,我将有文本块,并在最后所有的问题与广播组。当我强制我的代码只使用question.T(例如)来显示问题时,顺序就很好了,但是当我进入收音机时,选择复选框块(都有内部的“答案”块)顺序似乎不再存在。所以我的假设是,这与模板结构有关。有趣的是,当我交换模板中的块顺序(“question.R”排在第一位)时,结果是所有的“Radio”问题都先显示,然后是文本字段。因此,似乎模板子块中的顺序在某种程度上很重要,但不知道为什么
有人偶然发现过这种行为吗?你需要解析()
像question.T
或question.R这样的内部块,然后解析外部问卷
块
如果将此模板重写为PHP而不是它的语法,它将如下所示
foreach ($questionnaire as $q) {
if ('text' == $q['type']) {
// output text field
} elseif ('radio' == $q['type'] {
// output radio buttons
}
}
因此,基本上您必须驱动foreach
循环。例如,在输出表单时,查看ITDynamic renderer in的工作原理。您需要parse()
像question.T
或question.R
这样的内部块,然后解析外部问卷
块
如果将此模板重写为PHP而不是它的语法,它将如下所示
foreach ($questionnaire as $q) {
if ('text' == $q['type']) {
// output text field
} elseif ('radio' == $q['type'] {
// output radio buttons
}
}
因此,基本上您必须驱动foreach
循环。查看例如ITDynamic渲染器在输出表单时的工作方式