[英]How to change the order of the product list in cart_products in TYPO3 11?
我想創建鏈接,讓用戶對 cart_products 中的產品列表進行升序和降序排序。
為此,我在 cart_products 的“ Grid.html ”中創建了一個 Fluid-link,將排序參數傳遞給 controller:
<f:link.action action="list" arguments="{sorting:'up'}">Sorting up</f:link.action>
“ProductController.php”中的 function “listAction”獲取參數:
if ($this->request->hasArgument('sorting')) {
$sorting = $this->request->getArgument('sorting');
}
使用這個 if 語句,我可以根據給定的參數控制正在發生的事情:
if ($sorting === "up") {
// Get all products sorted ascending
} else if ($sorting === "down"){
// Get all products sorted decending
}
使用以下命令(原始)接收產品:
$products = $this->productRepository->findDemanded($demand);
文檔說以下 function 進行排序:
$query->setOrderings(
[
'organization.name' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
'title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
]
);
我想知道如何結合這兩個部分來接收所希望訂購的產品。
更改視圖助手以直接使用排序參數
<f:link.action action="listSorted" arguments="{sorting:'asc'}">Sorting up</f:link.action>
添加您自己的 controller 動作(擴展 class ProductController)
<?php
// ...
public function listSortedAction(int $currentPage = 1): void
{
$demand = $this->createDemandObjectFromSettings($this->settings);
// ...
// Code from cart_products/Classes/Controller/ProductController.php listAction()
// ...
// instead of $products = $this->productRepository->findDemanded($demand);
if ($this->request->hasArgument('sorting')) {
$sorting = $this->request->getArgument('sorting');
$products = $this->productRepository->findDemandedSorted($demand,$sorting);
}
//...
?>
然后添加您自己的存儲庫 function(擴展 class ProductRepository)
<?php
public function findDemandedSorted(ProductDemand $demand, $sortOrder)
{
$query = $this->createQuery();
// ...
// Code from cart_products/Classes/Domain/Repository/Product/ProductRepository.php findDemanded(ProductDemand $demand)
// ...
// instead of
// if ($orderings = $this->createOrderingsFromDemand($demand)) {
// $query->setOrderings($orderings);
// }
$query->setOrderings($sortOrder);
return $query->execute();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.