2011-03-01 41 views
2

是template.tplPHPTAL -Trying同時使用我使用PHPTAL 1.2.2 模板頁面宏

<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和鉻它工作很好,但我認爲源代碼中除了標籤外,還有很多html代碼。

+0

嘗試強制tal模板不緩存,看看它是否會在該點工作。 – 2011-03-01 05:23:55

回答

0

這樣的PHP錯誤只發生在php:前綴表達式內,所以它可能是大約php:field.value。看看field是否是一個對象。如果它是一個數組,那麼你需要php:field['value']。如果它可以是NULL,那麼你需要檢查。

0

當我將一個字符串連接到我的echo語句時,這也發生在我身上。該變量已分配。

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

此行適用於Chrome和Firefox。但不是Internet Explorer。我也試着用這種方式測試它

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

這個工程,我希望你能找到它有幫助。有誰知道他們爲什麼似乎以不同的方式解析數據?