1

zendビューヘルパーのformSelect()関数を使用してデータベーステーブルからすべてのフラグ(またはタグと呼ぶ)値を取得するドロップダウンメニューがありますが、値は配列形式で表示されます。必要なのはフラグ値の名前だけです。

ドロップダウンメニューを表示するためのビューphtmlファイル内のコードは次のとおりです。

<td><?php echo $this->formSelect('flag_id', null, null, $this->aFlags); ?> </td>

フラグメソッドは次のクラスにあります。

class App_Flags extends App {

public $rows = array(iPropertyID);

public function __construct() {
parent::__construct();
}

public function getPropFlags() {
$flag_tcid = 4;

$oSql = new Db_Table_Flags();
$oSelect = $oSql->select();
$oSelect->from(array('f' => 'flags'),array('value' => 'flag_name'));
$oSelect->where('flag_type_category = ?', $flag_tcid);
$rowCount = count($oSelect);

if ($rowCount > 0) {
    echo "found $rowCount rows";
}  else {
    echo 'no rows matched the query';
}

$result = $oSql->fetchAll($oSelect)->toArray();

return $result;

}

ドロップダウンメニューには、次のように値が表示されます。

   0 
    flag name 
   1  
    another flag name 
   2  
    flag name again  
   3 
    flag name here

ドロップダウンに配列キーを表示したくありません。旗の名前だけが必要です。formSelect()の最初のパラメーターは無視されているようですが、これに従って配列をプルします。

string formSelect(string | array $ name、[mixed $ value = null]、[array | string $ attribs = null]、[array $ options = null]、[string $ listsep = "
\ n"])string | array $ name:文字列の場合、要素名。配列の場合、他のすべてのパラメーターは無視され、追加されたパラメーターの代わりに配列要素が抽出されます。

または、getPropFlags()でクエリを設定する方法である可能性があります。何が間違っているのかわかりません。私はこれをしばらく見ていて、アイデアが不足しています。どんな助けでも素晴らしいでしょう。

4

1 に答える 1

0

次のように変更します。

$result = $oSql->fetchAll($oSelect)

$options = array();
foreach($result as $k => $v) {
    $options[$v['f']] => $v['value'];
}

return $options;

いくつかのvar_dumpsを実行して、配列を比較します。単純なキー/値ペア配列が必要です。

于 2012-10-05T17:37:31.340 に答える