[英]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.