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 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 ответа
Такие ошибки PHP происходят только внутри php:
выражение с префиксом, так что это, вероятно, о php:field.value
, Видишь ли, если field
это объект. Если это массив, то вам нужно php:field['value']
, Если это может быть НЕДЕЙСТВИТЕЛЬНО, тогда Вы должны проверить это.
Это также случилось со мной, когда я связал строку с моим эхо-оператором. Переменная присвоена.
if($des != NULL)
echo '<p><a href="javascript:rightgroupnav()">'.$des->name.'</a></p>';
Эта линия работает в Chrome и Firefox. Но не Internet Explorer. Я пытался также проверить это таким образом
<p><?=$des->name?></p>
Это работает, и я надеюсь, что вы найдете это полезным. Кто-нибудь знает, почему они, кажется, анализируют данные по-разному?