[英]Extend repository in TYPO3 9.5 LTS / Extbase
我正在嘗試擴展此IndexRepository以添加我自己的特殊搜索方法。
在 controller 中,我將自己的 IndexRepository 注入:
use Webian\Iancalendar\Domain\Repository\IndexRepository;
/**
* Inject index repository.
*
* @param IndexRepository $indexRepository
*/
public function injectIndexRepository(IndexRepository $indexRepository)
{
$this->indexRepository = $indexRepository;
}
我所做的工作有效,但我收到此警告:
PHP Warning
Core: Error handler (BE): PHP Warning: Declaration of Webian\Iancalendar\Controller\
BackendController::injectIndexRepository(Webian\Iancalendar\Domain\Repository\IndexRepository $indexRepository)
should be compatible with HDNET\Calendarize\Controller\
AbstractController::injectIndexRepository(HDNET\Calendarize\Domain\Repository\IndexRepository $indexRepository)
in /typo3conf/ext/iancalendar/Classes/Controller/BackendController.php line 42
那是因為我使用自己的Webian\Iancalendar\Domain\Repository\IndexRepository
擴展H.NET\Calendarize\Domain\Repository\IndexRepository
。 如果我使用原來的警告不會出現,但顯然我自己的方法沒有被調用。
我怎樣才能避免這個警告?
您要么不擴展H.NET\Calendarize\Controller\AbstractController
,而是擴展 Extbase 的默認AbstractController
,那么您將需要自己實現所有必需的邏輯。
或者您只是為您的注入方法使用不同的名稱:
use HDNET\Calendarize\Controller\AbstractController;
use MyNamespace\MyExtension\Domain\Repository\IndexRepository;
class MyController extends AbstractController
{
...
/**
* The index repository.
*
* @var IndexRepository
*/
protected $myIndexRepository;
/**
* Inject index repository.
*
* @param IndexRepository $myIndexRepository
*/
public function injectMyIndexRepository(IndexRepository $myIndexRepository)
{
$this->myIndexRepository = $myIndexRepository;
}
...
class IndexRepository extends \HDNET\Calendarize\Domain\Repository\IndexRepository
{
...
// My method that extends \HDNET\Calendarize\Domain\Repository\IndexRepository functionalities
public function findByStartDate(DateTime $startDate = null, DateTime $endDate = null)
{
...
方法名並不重要,重要的是它以inject
開頭,並且有一個類型提示指示要注入的依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.