PHPTAL - Попытка получить свойство необъекта при использовании макросов - PullRequest
2 голосов
/ 01 марта 2011

Я использую 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-кода, кроме этоготег.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2013

Это также случилось со мной, когда я связал строку с моим оператором echo.Переменная присвоена.

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

Эта строка работает в Chrome и Firefox.Но не Internet Explorer.Я также попытался проверить это таким образом

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

Это работает, и я надеюсь, что вы найдете это полезным.Кто-нибудь знает, почему они, кажется, анализируют данные по-разному?

0 голосов
/ 01 марта 2011

Такие ошибки PHP встречаются только внутри php: префиксного выражения, поэтому, вероятно, оно составляет php:field.value. Посмотрите, является ли field объектом. Если это массив, то вам нужно php:field['value']. Если это может быть NULL, то вам нужно проверить это.

...