質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

741閲覧

ECCUBE3 規格商品の並び替え(管理画面)

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2019/04/05 04:06

現在、ECCUBEの3系のカスタマイズを行なっておりますが、
以下の箇所につまづいておりまして、お知恵をお借りできますと幸いです。

<やろうとしていること>
規格のrankを更新した時に、管理画面の商品の規格設定画面の規格のプルダウンを
rankの降順になるようにしたい。

<つまづいている点>
コントローラのgetProductClassesExcludeNonClassを修正しておりますが、
以下のエラーが発生してしまっております。

InvalidPropertyPathException in PropertyPath.php line 118: Could not parse property path "[]". Unexpected token "[" at position 0

<お伺いしたいこと>
・上記のエラーの解消方法
・もしくは、別の実装案で修正した方が良いなど

<プログラム>
src/Eccube/Controller/Admin/Product/ProductClassController.php

private function getProductClassesExcludeNonClass($app, $Product) { $ProductClasses = $Product->getProductClasses(); /* //**classcaregoryの検索キー+pathエラー //ソートロジックを組み込む //STEP1 名前でループを回し、Rankをキーに再格納する $pcArray = array(); foreach($ProductClasses as $pc){ $ClassCategory1 = $pc->getClassCategory1(); $ClassCategory2 = $pc->getClassCategory2(); //ランクを取得し格納 if(!empty($ClassCategory1)){ $pcTmp = $app['eccube.repository.class_category']->findOneBy(array('ClassName' => $ClassCategory1)); $pcArray[$pcTmp['rank']] = $ClassCategory1; }elseif(!empty($ClassCategory2)){ $pcTmp = $app['eccube.repository.class_category']->findOneBy(array('ClassName' => $ClassCategory2)); $pcArray[$pcTmp['rank']] = $ClassCategory2; } } //STEP2 ソート処理 krsort($pcArray); return $pcArray; */ return $ProductClasses->filter(function($ProductClass) { $ClassCategory1 = $ProductClass->getClassCategory1(); $ClassCategory2 = $ProductClass->getClassCategory2(); return ($ClassCategory1 || $ClassCategory2); }); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<お伺いしたいこと>

・上記のエラーの解消方法
・もしくは、別の実装案で修正した方が良いなど

後者をご提案します。
ProductClassController.php#L67 〜 ProductClassController.php#L81を次のように修正ください。

PHP

1$builder 2 ->add('class_name1', 'entity', array( 3 'class' => 'Eccube\Entity\ClassName', 4 'query_builder' => function(EntityRepository $repository) { 5 return $repository->createQueryBuilder('c')->orderBy('c.rank', 'DESC'); 6 }, 7 'property' => 'name', 8 'empty_value' => '規格1を選択', 9 'constraints' => array( 10 new Assert\NotBlank(), 11 ), 12 )) 13 ->add('class_name2', 'entity', array( 14 'class' => 'Eccube\Entity\ClassName', 15 'query_builder' => function(EntityRepository $repository) { 16 return $repository->createQueryBuilder('c')->orderBy('c.rank', 'DESC'); 17 }, 18 'property' => 'name', 19 'empty_value' => '規格2を選択', 20 'required' => false, 21 ));

query_builderの部分を追加しているだけです。
SymfonyFormのEntityTypeにはquery-builderのオプションが渡せるので、データを取ってきてからPHPでソートするのではなく、データを取ってくるときにSQLでソートします。

投稿2019/04/05 05:11

編集2019/04/05 05:28
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問