![](/img/trans.png)
[英]How to define a RegularExpresion Validation for an Controller Action Param, in TYPO3 v10/v11?
[英]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.