PHPTAL-在使用宏时尝试获取非对象的属性
我使用的是PHPTAL 1.2.2 模板页面为Template.tplPHPTAL-在使用宏时尝试获取非对象的属性,php,phptal,Php,Phptal,我使用的是PHPTAL 1.2.2 模板页面为Template.tpl <form> <div tal:repeat="field fields"> <tal:block tal:define="name repeat/field/key" metal:use-macro="${field/type}" /> </div> </form> <tal:block me
<form>
<div tal:repeat="field fields">
<tal:block tal:define="name repeat/field/key" metal:use-macro="${field/type}" />
</div>
</form>
<tal:block metal:define-macro="text">
<label>${field/label}</label><input name="${name}" type="text" value="${field/value}" />
</tal:block>
<tal:block metal:define-macro="select">
<label>${field/label}</label><select name="${name}">
<tal:block tal:repeat="value field/valuelist">
<option tal:condition="php:field.value != value" value="${value}">${value}</option>
</tal:block>
</select>
</tal:block>
我的php页面是
<?php
require_once 'PHPTAL.php';
$fields = array(
'name' => array('label'=>'Name','type'=>'text','value'=>'Test User'),
'user' => array('label'=>'Age','type'=>'select','valuelist'=>array(1,2,3),'value'=>2) ,
);
$t = new PHPTAL('tempalte.tpl');
$t->fields = $fields;
try {
echo $t->execute();
}
catch (Exception $e){
echo $e;
}
?>
我在ie中遇到一个错误,因为我试图在第24行的C:\Windows\Temp\tpl_4d6be820_formonline1_uuhafmcyjtsql6rgutrjxcha.php中获取非对象的属性
但在firefox和chrome中,它工作得很好,但我查看了源代码,其中有很多html代码,而不是那个标记。这种PHP错误只发生在PHP:前缀表达式中,所以可能是关于PHP:field.value的。查看字段是否为对象。如果是数组,那么需要php:field['value']。如果可以为NULL,那么您需要检查它。这种PHP错误只发生在PHP:prefixed表达式中,所以可能是关于PHP:field.value的。查看字段是否为对象。如果是数组,那么需要php:field['value']。如果它可以为NULL,那么您需要检查它。当我将字符串连接到echo语句时,这种情况也发生在我身上。变量已赋值
if($des != NULL)
echo '<p><a href="javascript:rightgroupnav()">'.$des->name.'</a></p>';
这一行适用于Chrome和Firefox。但不是Internet Explorer。我也试着用这种方式测试它
<p><?=$des->name?></p>
这很有效,我希望你能发现它对你有帮助。有人知道为什么他们似乎以不同的方式解析数据吗?当我将字符串连接到echo语句时,这种情况也发生在我身上。变量已赋值
if($des != NULL)
echo '<p><a href="javascript:rightgroupnav()">'.$des->name.'</a></p>';
这一行适用于Chrome和Firefox。但不是Internet Explorer。我也试着用这种方式测试它
<p><?=$des->name?></p>
这很有效,我希望你能发现它对你有帮助。有人知道为什么他们似乎以不同的方式解析数据吗?尝试强制tal模板不缓存,看看它在该点是否有效。尝试强制tal模板不缓存,看看它在该点是否有效。