2

我正在使用 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 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__HAfMCyjTSQl6RgUTRjXcHA.php 中非对象的属性”

但在 Firefox 和 chrome 中它工作正常,但我查看源代码中除了那个标签之外还有很多 html 代码。

4

2 回答 2

0

这样的 PHP 错误只发生在php:前缀表达式中,所以它可能是关于php:field.value. 看看是否field是一个对象。如果它是一个数组,那么你需要php:field['value']. 如果它可以为 NULL,那么您需要检查它。

于 2011-03-01T16:35:57.350 回答
0

当我将一个字符串连接到我的 echo 语句时,这也发生在我身上。变量被赋值。

   if($des != NULL)
            echo '<p><a href="javascript:rightgroupnav()">'.$des->name.'</a></p>';

此行适用于 Chrome 和 Firefox。但不是 Internet Explorer。我也尝试以这种方式对其进行测试

<p><?=$des->name?></p>

这很有效,我希望你能发现它有帮助。有谁知道为什么他们似乎以不同的方式解析数据?

于 2013-09-16T03:26:23.353 回答