我用renderChildren()
写了一个viewhelper ...我得到了这个错误,这对我来说没有意义:
模板标签没有正确嵌套。预期:
Tx_Hplusinfo_ViewHelpers_RehaKatViewHelper;实际:
Tx_hplusinfo_ViewHelpers_RehaKatViewHelper
以下是导致此消息的模板部分:
<f:if condition="{demand.pageId}=={settings.sucheRehaPid}">
<h:rehaKat klinik="{entfernung.klinik}" demand="{demand}" as="kat">
<td><f:if condition="{kat.isStationaer}">✓</f:if></td>
<td><f:if condition="{kat.isAmbulant}">✓</f:if></td>
</h:rehaKat>
</f:if>
这是viewhelper渲染功能:
/**
*
* @param Tx_Hplusinfo_Domain_Model_Klinik $klinik
* @param Tx_Hplusinfo_Domain_Model_SearchDemand $demand
* @param string $as Iteration variable
* @return string
*/
public function render(Tx_Hplusinfo_Domain_Model_Klinik $klinik, Tx_Hplusinfo_Domain_Model_SearchDemand $demand, $as ) {
$isAmbulant = false;
$isStationaer = false;
foreach($klinik->getReha() as $klinikreha) {
foreach($demand->getRehas() as $demandreha) {
if($klinikreha->getReha()->getUid() == $demandreha) {
if(!$isStationaer)
$isStationaer = $klinikreha->getIsStationaer();
if(!$isAmbulant)
$isAmbulant = $klinikreha->getIsAmbulant();
break;
}
}
if ($isAmbulant && $isStationaer)
break;
}
$this->templateVariableContainer->add($as, array('isAmbulant'=>$isAmbulant, 'isStationaer'=>$isStationaer));
return $this->renderChildren();
}
答案 0 :(得分:1)
这是否意味着结束标记区分大小写,开放标记不是?
由于我希望答案100%完成,我想在此处添加解释。原因是两部分:一,PHP类名称不区分大小写(尽管类加载器可能不是,取决于文件系统等) - 以及两个,Fluid本身跟踪分配给ViewHelpers的类名打开节点,它与结束节点的已解析类名相匹配。
那么当根据大小写错误地命名空间声明或ViewHelper引用时会发生什么:
因此,结合上面的触发器,您可以看到使用结束标记确实意味着与使用内联表示法或自闭项标记相比,Fluid的行为有所不同,您可以看到PHP类加载与Fluid行为结合在某些边缘情况下的结果在这种类型的错误发生。
答案 1 :(得分:0)
最后,我发现了这个问题:这是命名空间的低/低错误拼写:
错误:{namespace h=Tx_hplusinfo_ViewHelpers}
右:{namespace h=Tx_Hplusinfo_ViewHelpers}
(资本 h )
奇怪的是,这个拼写错误不是开场标签或任何内联浏览器的问题,例如。
{h:myFormatter(inp:{xy})}
这是否意味着结束标记区分大小写,开放标记不是?