1

これは、参照フィールドのコード例を単純に書き直したものです。

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\Form/Field.php:652 [2] htmlspecialchars() は、パラメーター 1 が文字列であると想定し、配列を指定します

コードを見ると、Field.php の 648 行目あたり

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

確かに ($value,descr) の配列として $descr を作成しているようです

これはバグですか、それともベースから外れていますか。ありがとう。

4

1 に答える 1

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);
于 2012-04-23T07:09:24.103 に答える