Hallo,
ich stehe vor folgendem Problem. Ich möchte in einer Liste, Produkte nach Betrag sortieren und komme gerade nicht weiter. Dabei soll nicht auf ein Objekt zugegriffen werden, sondern 2 Parameter(sortfield=amount und sortdir=order_ascending/descending) in ein Array gepackt mitgegeben werden. Vom List View -> List Controller -> List repository müssen diese zwei Werte geschickt werden.
Momentan sieht dass bei mir so aus :
List View :
<div class="sort"><f:link.action action="list" arguments="{listConfig: {sortField:'amount', sortDir:'ORDER_ASCENDING' }}"><f:translate key='tx_chswishlist.sort_amount'/></f:link.action></div>
Controller (listAction) :
/**
* Shows the list view
* @param array $listConfig
* @return void
*/
public function listAction($listConfig = array()) {
$wishes = $this->wishRepository->findByTypeAndStatus(0, 0, $listConfig);
$this->view->assign('wishes', $wishes);
$this->view->assign('settings', $this->settings);
}
Repository:
class WishRepository extends Repository {
protected $defaultOrderings = array(
'sorting' => QueryInterface:😮RDER_ASCENDING,
);
/**
* finds wish by type and status
* @param int $type
* @param int $status
* @param array $listConfig
* @return mixed
*/
public function findByTypeAndStatus($type,$status,$listConfig) {
$query = $this->createQuery();
$query->matching($query->logicalAnd($query->equals('type',$type),$query->equals('status', $status)));
$query->setOrderings(array('amount' => QueryInterface:😮RDER_ASCENDING,'sorting' => QueryInterface:😮RDER_ASCENDING));
return $query->execute();
}
'amount' wird durch ersten Wert ersetzt, ORDER_ASCENDING wird durch den zweiten Wert ersetzt.
Vielen dank für jedweilige Hilfe!