0

ドロップダウンリストにマルチオプションを挿入する必要があります。オプションはデータベースのテーブルから取得したものです。次のような要素を作成しました。

    $this->add(array(
        'name'       => 'company',
        'type'       => 'Zend\Form\Element\Select',
        //'multiOptions'=> $options,
        'options'    => array(
            'label'        => 'Company',
        ),
        'attributes' => array(
            'style'  => "float:right;",
        ),          
    )); 

ドロップダウンリストから、データベースのテーブルにあるいくつかの値を選択したいと思います。たとえば、エンティティContactsがあり、データベース内のcompanysという名前のテーブルにある会社を連絡先として選択する必要があります。

zendフレームワークのサイトを読んだ後、次のコードを使用してみました。

$params = array(
           'driver'=>'Pdo_Mysql',
           'host'=>'localhost',
           'username'=>'root',
           'password'=>'',
           'dbname'  =>'myDataBase'
            );

$db = new \Zend\Db\Adapter\Adapter($params);
$sql= new Sql($db);

$select = $sql->select();
$select ->from('companies')
    ->columns(array('id','company_name'))
    ->order(" 'company_name' ASC");

また、他のいくつかのサイトで、関数を使用できることを読みました。

$options = $sql->fetchPairs('SELECT id, name FROM country ORDER BY name ASC');

しかし、ZendFramework2にはもう存在しないようです。

みんな、手を貸してください。コードが良くなくて、もっと良いアイデアがあれば教えてください。

前もって感謝します!

4

2 に答える 2

0

値を設定するには、コントローラーにそのフィールド検証を追加する必要があります。

$select = $db->select()->where("state_code = ?",$arr["state_code"]);
$resultSet = $cityObj->fetchAll($select);
$cityArr = $resultSet->toArray();

$city_ar = array();
foreach($cityArr as $city){
    $city_ar[$city['id']] = $city['company'];
}
$form->company->setMultiOptions($city_ar);
$form->company->setValue($val["company"]);

このコードを使用することにより、国のドロップダウンは結果セット配列($ resultSet)にある値を持ちます。

于 2013-02-13T10:43:31.433 に答える