> フロント機能 > 規格のプルダウン表示順序について |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
waiya |
投稿日時: 2016/6/16 5:54
対応状況: −−−
|
半人前 登録日: 2009/5/29 居住地: 大阪市 投稿: 13 |
Re: 規格のプルダウン表示順序について DELIGHTさんご解説いただきありがとうございます!
確かにマッピングでデータベースアクセス時にソートができれば一番よいですね.....今回はお教えいただいた箇所を参考にして下記の箇所にusortを追加することでフロント側の表示はうまくいきました。 https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L100 if ($ProductClass->getClassCategory1()) { $classCategoryId1 = $ProductClass->getClassCategory1()->getId(); if (!empty($classCategoryId1)) { //規格1ランク用の配列を取得 $cc_rank_1[$ProductClass->getClassCategory1()->getName()] = $ProductClass->getClassCategory1()->getRank(); $this->classCategories1[$ProductClass->getClassCategory1()->getId()] = $ProductClass->getClassCategory1()->getName(); if ($ProductClass->getClassCategory2()) { //規格2ランク用の配列を取得 $cc_rank_2[$ProductClass->getClassCategory2()->getName()] = $ProductClass->getClassCategory2()->getRank(); $this->classCategories2[$ProductClass->getClassCategory1()->getId()][$ProductClass->getClassCategory2()->getId()] = $ProductClass->getClassCategory2()->getName(); } } } [ループが終わった後に] // 規格1のソート uasort($this->classCategories1,function($a, $b) use($cc_rank_1){ if($cc_rank_1[$a] == $cc_rank_1[$b]) return 0; return $cc_rank_1[$a] < $cc_rank_1[$b]; }); // 規格2のソート if ($ProductClass->getClassCategory2()) { uasort($this->classCategories2,function($a, $b) use($cc_rank_2){ if($cc_rank_2[$a] == $cc_rank_2[$b]) return 0; return $cc_rank_2[$a] < $cc_rank_2[$b]; }); } あまりスマートではありませんが、これで様子を見ていきます。 もし、不具合などあればまた記載します。 これをもって一旦解決済みとさせていただきます。 |
DELIGHT |
投稿日時: 2016/6/15 20:44
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: 規格のプルダウン表示順序について 下記の箇所でも同様の処理がありました。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/template/default/Product/detail.twig#L28 https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L378 先の書き込みと合わせた2箇所で配列のソートをする必要があります。
|
DELIGHT |
投稿日時: 2016/6/15 20:36
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: 規格のプルダウン表示順序について 申し訳ありません、上記だけでは不十分なようです。
案が思いついたら再度書きます。
|
DELIGHT |
投稿日時: 2016/6/15 20:15
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: 規格のプルダウン表示順序について 当該箇所の処理は下記の順で追えます。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Form/Type/AddCartType.php#L105 https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L156 https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L60 ProductClassのマッピングは下記に記載されていますが、 私の知る限りでは、外部テーブルによるソートをマッピングによって実現することは出来ません。 https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml#L69 そのため、Eccube\Entity\Product::_calc()内で配列をソートした上でforeachをする必要があります。 Eccube\Entity\Product::getProductClasses()の返り値は配列ではなくDoctrine\Common\Collections\Collectionですので、 Doctrine\Common\Collections\Collection::toArray()した上でusort()するといいでしょう。
|
waiya |
投稿日時: 2016/6/15 19:13
対応状況: −−−
|
半人前 登録日: 2009/5/29 居住地: 大阪市 投稿: 13 |
規格のプルダウン表示順序について ECCUBE3.0.10でサイト制作をおこなっておりますが、
フロント画面で規格1・規格2ともにプルダウンの順序が 管理画面の規格登録画面で順序を変更しても反映されないという現象にあわれた方おられますか? 希望としては、dtb_class_categoryテーブルのrankの降順にしたいと思っています。 もしご存知の方おられましたらお知恵を貸していただきたいと思います。 何卒よろしくお願いいたします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |