目次
動作イメージ
環境
この記事は、以下の管理人の検証環境にて記事にしています。
EC-CUBE | 4.1.2-p1 |
リポジトリの作成
app\Customize\Repository に CustomizeOrderRepository.php という名前で ファイルを設置する。
src\Eccube\Repository\OrderRepository\OrderRepository.phpから定数COLUMNSと getQueryBuilderBySearchDataForAdmin を丸ごとコピーして CustomizeOrderRepository.php に記述する。
定数COLUMNSに order_date をキーとして o.order_date を値に設定する。
記述イメージは下記になる。
namespace Customize\Repository; use Eccube\Entity\Master\OrderStatus; use Eccube\Entity\Shipping; use Eccube\Repository\QueryKey; use Eccube\Util\StringUtil; use Eccube\Repository\OrderRepository AS BaseOrderRepository; class CustomizeOrderRepository extends BaseOrderRepository { public const COLUMNS = [ 'order' => 'o.name01' ,'orderer'=> 'o.id' ,'shipping_id'=> 's.id' ,'purchase_product' => 'oi.product_name' ,'quantity' => 'oi.quantity' ,'payment_method' => 'o.payment_method' ,'order_status' => 'o.OrderStatus' ,'purchase_price' => 'o.total' ,'shipping_status' => 's.shipping_date' ,'tracking_number' => 's.tracking_number' ,'delivery' => 's.name01' ,'order_date' => 'o.order_date'// 追記 ]; public function getQueryBuilderBySearchDataForAdmin($searchData) { ~~省略~~~~ return $this->queries->customize(QueryKey::ORDER_SEARCH_ADMIN, $qb, $searchData); } }
コントローラーの作成
src\Eccube\Controller\AdminOrder
のOrderController.phpをコピーして
app\Customize\Controller\Admin\Order
に設置します。
コピーした OrderController.php の namespace を忘れずに
namespace Eccube\Controller\Admin\Order;
↓
namespace Customize\Controller\Admin\Order;
へ変更する。
後は下記のようにファイルの追記などを行う
namespace Customize\Controller\Admin\Order;//変更 ~~省略~~~~ use Customize\Repository\CustomizeOrderRepository;//追記 class OrderController extends AbstractController { ~~省略~~~~ protected $CustomizeOrderRepository;//追記 ~~省略~~~~ public function __construct( ~~省略~~~~ MailService $mailService, CustomizeOrderRepository $CustomizeOrderRepository//追記 ) { ~~省略~~~~ $this->mailService = $mailService; $this->CustomizeOrderRepository = $CustomizeOrderRepository;//追記 } ~~省略~~~~ public function index(Request $request, $page_no = null, PaginatorInterface $paginator) { ~~省略~~~~ // $qb = $this->orderRepository->getQueryBuilderBySearchDataForAdmin($searchData);//コメントアウト $qb = $this->CustomizeOrderRepository->getQueryBuilderBySearchDataForAdmin($searchData);//追記 ~~省略~~~~ }
Twigの作成
src/Eccube/Resource/template/admin/Order/
からindex.twigをコピーして
app/template/admin/Order/
に設置する。
index.twig の #search_result の thead > tr の中に <th> を追加する。
tbody > tr の中に <td>を追加し、{{ Order.Order_date|date_min }}
を記載する。
<table class="table table-sm" id="search_result"> <thead> <tr> ~~省略~~~~ <th class="border-top-0 pt-2 pb-2 text-center text-nowrap">{{ '注文日'|trans }}<a href="#" class="js-listSort" data-sortkey="order_date"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th> ~~省略~~~~ </tr> </thead> <tbody> ~~省略~~~~ <td class="align-middle text-right">{{ Order.Order_date|date_min }}</td> ~~省略~~~~
最後に
これで注文日での並び替えができるはずです。
省略ばかりで分かりにくいかもしれませんが、頑張ってください。
今日はこの辺でー