yamlから取得した値とDBから取得した値をoption_for_select、objects_for_selectで表示する
1.DBテーブルにジャンルなどを数字でもち、YAMLに文字列もつデータを文字列でセレクトボックスに表示させたいとき。
または
2.JOINしたテーブルからIDに一致する文字列をひっぱてセレクトボックスに表示させたいとき。
やりたことはなんとなくわかるけど、
実際のやろうと思うと、symfonyではようわからんかったので、まとめてみた。
◆model側
//商品のジャンルをとってくる public static function getProduct() { $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(ProductPeer::ID); //ジャンルは数字で文字列はYAMLでもっている $c->addSelectColumn(ProductPeer::GENRE); $rs =ProductPeer::doSelectRS($c); $rs->setFetchMode(ResultSet::FETCHMODE_ASSOC); return $rs; } //会社名をとってくる public static function getMstCompanyList() { $c = new Criteria(); $c->addAscendingOrderByColumn(MstCompanyPeer::SEQNO); return MstCompanyPeer::doSelect($c); }
◆action側
//パラメータに一致する一行をDBから取得してくる $this->product = ProductPeer::retrieveByPk($this->getRequestParameter('id')); //DBから取得 $this->companyList = MstCompanyPeer::getMstCompanyList();
◆templete側
//yamlから表示内容を取得 $list = sfConfig::get('app_product_list'); echo select_tag('productid',option_for_select($list,$product->getName())); //DBから取得 echo select_tag('Id' obeject_for_select($companyList,'getid','getName', $product->getName()));