我想重写createByTaxonPaginator()方法,以便indexByTaxon()方法返回排序结果。该新方法应该使用Request来获取排序Get-Parameter。为了订购搜索结果,我找到了该服务并覆盖了该服务,如下所示:
sylius_search.repository:
class: ShopBundle\Entity\SearchIndexRepository
arguments: ['@doctrine.orm.entity_manager', '@sylius.repository.product', '@request_stack']
Run Code Online (Sandbox Code Playgroud)
也许这不是一个好的做法,我不知道。但它有效...不幸的是我没有找到 sylius.repository.product 的任何服务定义来查看所需的参数。
在我的配置中我有以下内容:
sylius_product:
classes:
product:
model: ShopBundle\Entity\Product # My Own Entity
controller: Sylius\Bundle\CoreBundle\Controller\ProductController
repository: ShopBundle\Entity\ProductRepository
# is there an option for injecting arguments?
form:
default: ShopBundle\Form\Type\ProductType
translation:
model: ShopBundle\Entity\ProductTranslation
form:
default: ShopBundle\Form\Type\ProductTranslationType
Run Code Online (Sandbox Code Playgroud)
有没有一个选项可以注入我不知道的参数?这里的 Repo 扩展了默认的 Repo 并重载了方法createByTaxonPaginator()
<?php
namespace ShopBundle\Entity;
use Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductRepository as BaseProductRepository;
use Sylius\Component\Core\Model\TaxonInterface;
class ProductRepository extends BaseProductRepository
{
/**
* Create paginator for products categorized under given taxon.
* …Run Code Online (Sandbox Code Playgroud)