目次
動作イメージ
環境
この記事は、以下の管理人の検証環境にて記事にしています。
| 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>
~~省略~~~~
最後に
これで注文日での並び替えができるはずです。
省略ばかりで分かりにくいかもしれませんが、頑張ってください。
今日はこの辺でー