2012-04-22 78 views
1

打破這是的示例代碼引用字段一個簡​​單的重新寫入:敏捷工具包4.2 ...引用字段類型與模型

class page_LoadResults extends Page { 
function init(){ 
    parent::init(); 
    $p=$this; 
    $f=$p->add('Form'); 

$c=$p->add('Model_Season'); 
$f->addField('reference','Season') 
    ->setValueList($c) 
    ->validateNotNull() 
    ->add('Icon',null,'after_field') 
    ->set('arrows-left3') 
    ->addStyle('cursor','pointer') 
    ->js('click',$f->js()->reload()) 
    ; 

調用時我得到一個錯誤信息:

\ atk4 \ lib中\窗體/ Field.php:652 [2]用htmlspecialchars()預計參數1是字符串,Field.php

foreach($this->getValueList() as $value=>$descr){ 
     // Check if a separator is not needed identified with _separator< 
     $output.= 
      $this->getOption($value) 
      .htmlspecialchars($descr) 
      .$this->getTag('/option'); 
    } 
給出

綜觀代碼,圍繞線648陣列

確實很明顯是創建$ descr作爲($ value,descr)的一個數組。

這是一個bug還是我脫離基地。謝謝。

回答

2

使用ATK 4.2語法

<?php 

class page_b extends Page { 
    function init(){ 
     parent::init(); 
     $p=$this; 
     $f=$p->add('Form'); 
     $field = $f->addField('Dropdown','Season'); 
     $field->setModel("a"); 
     $field 
      ->validateNotNull() 
      ->add('Icon',null,'after_field') 
      ->set('arrows-left3') 
      ->addStyle('cursor','pointer') 
      ->js('click',$f->js()->reload()) 
      ; 
    } 
} 
  1. 注重addField("Dropdown")
  2. 使用setModel而非setValueList($model);
+0

你有沒有測試過這個? 它不適用於表格模型。 類Form_Field_ValueList定義了只包含以下代碼的setModel()方法:$ this-> setValueList(array('foo','bar')); – 2012-05-14 17:06:36

+0

它是getValueList()方法,然後對事物進行排序。 – jancha 2012-05-15 21:10:03

+0

我不明白你的評論,setModel函數只是調用超級方法,然後將值列表設置爲foo,bar。下拉列表中不包含任何內容。 – 2012-05-16 13:23:41