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;
    }

?>

「C:\Windows\Temp\tpl_4d6be820_formonline1__HAfMCyjTSQl6RgUTRjXcHA.php の 24 行目で非オブジェクトのプロパティを取得しようとしています」というエラーが表示されました。

しかし、FirefoxとChromeでは正常に動作しますが、ソースを表示すると、そのタグ以外に多くのhtmlコードが含まれていました。

4

2 に答える 2

0

このような PHP エラーはphp:、プレフィックス付きの式の中でのみ発生するため、おそらくphp:field.value. fieldがオブジェクトかどうかを確認します。配列の場合は、が必要php:field['value']です。NULL になる可能性がある場合は、それを確認する必要があります。

于 2011-03-01T16:35:57.350 に答える