簡體   English   中英

TYPO3 V11:“PHP 警告:未定義的數組鍵”,$this->request->getArguments() 為空

[英]TYPO3 V11 : "PHP Warning: Undefined array key" , $this->request->getArguments() is empty

我是typo3的新用戶,我制作了一個插件來顯示帶有搜索欄的用戶來過濾他們,但是當我想顯示我的頁面時出現這個錯誤:

(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception
PHP Warning: Undefined array key "word" in MyPath/Controller/UserlistController.php line 44

在我的控制器中,我嘗試獲取參數以在我的過濾器中使用它,如下所示:

   public function listAction(int $currentPage = 1)
{
   $arguments = $this->request->getArguments();
   $users = $this->userlistRepository->findBySearch($arguments['word'] ? $arguments['word'] : '');

somecode ...

}

我嘗試了 $arguments 的轉儲,但它是空的

我的存儲庫有一部分:

/**
     * @param string $word
     * @return object[]|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
     * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
     */
    public function findBySearch(string $word) {
        $query = $this->persistenceManager->createQueryForType(\TYPO3\CMS\Extbase\Domain\Model\FrontendUser::class);
        $querySettings = $query->getQuerySettings();
        $querySettings->setStoragePageIds([26]);
        $query->setQuerySettings($querySettings);

        $query->setOrderings([
            'lastName' => QueryInterface::ORDER_ASCENDING
        ]);

有人知道為什么我不能爭論嗎? 謝謝

如果您需要更多部分代碼,請告訴我

如果您只是調用 List 操作而不發送過濾器表單,則參數為空。

您應該在像這樣訪問它之前測試每個預期的參數:

if($this->request->hasArgument('word')) {
        $searchOption = $this->request->getArgument('word'));
}

您可以嘗試在此處使用null 合並運算符

$users = $this->userlistRepository->findBySearch($arguments['word'] ?? '');

如果這不起作用,請檢查之前是否設置了該值(請參閱Tobias Gaertner 的答案)。 還要記住

$this->request->getArguments();

僅獲取當前插件上下文中的參數,因此任何看起來像 tx_yourplugin_p1[argument] 的參數。 您必須確保正確傳遞此參數。 如果必須使用通用 GET 參數,可以使用

\TYPO3\CMS\Core\Utility\GeneralUtility::_GET();

雖然“word”變量的處理是一個問題,但我認為如果沒有發送搜索詞,也許應該調用另一個 Repository-Method。 下面我輸入$this->userlistRepository->findAll()但它也可以顯示其他內容,也許只是一個說明需要選擇的模板。

public function listAction(int $currentPage = 1)
{
   $arguments = $this->request->getArguments();
   if($this->request->hasArgument('word')) {
       $searchOption = $this->request->getArgument('word');
       $users = $this->userlistRepository->findBySearch($searchOption);
   }
   else {
      $users = $this->userlistRepository->findAll();
      somecode ...
   }
}

我嘗試了所有解決方案,事實證明錯誤來自我的存儲庫,我嘗試了一個簡單的

$users = $this->userlistRepository->findAll();

我得到了這個錯誤:

HP 警告:/mypath/htdocs/public/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapFactory.php 第 224 行中未定義的數組鍵“tx_vendor_domain_model_vendor”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM