Я пытаюсь передать аргумент из представления в контроллер в TYPO3 8.7, но постоянно получаю сообщение об ошибке:
#1253175643: The argument type for parameter $player of method Playground\Tabletennis\Controller\AdminController->playerdetailsAction() could not be detected.
Список игроков передается с контроллера на просмотр. Там я передаю список с фрагментом в часть, в которой я использую a для каждого цикла (как игрока), чтобы отобразить имена, окруженные действием link.action, которое должно снова перенести игрока на контроллер.
Я получаю список игроков из queryBuilder и содержит uid и name. Итерирование через них работает. Но когда я нажимаю на имя, я получаю ошибку. Ссылка «дополнительная информация» говорит, что мне нужно получить аргумент вручную, но попытка $keyword = $this->request->getArgument('player');
тоже не сработала.
AdminController.php:
/**
* action info
*
*/
public function infoAction()
{
$players = $this->getPlayers();
$this->view->assign('players', $players);
}
/**
* action playerdetails
*
*/
public function playerdetailsAction($player)
{
$this->view->assign('player', $player);
}
/**
* action returnPlayers
*/
function getPlayers()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_tabletennis_domain_model_players');
$statement = $queryBuilder
->select('uid', 'name')
->from('tx_tabletennis_domain_model_players')
->addOrderBy('name', 'ASC')
->execute();
while ($row = $statement->fetchAll()) {
return $row;
}
}
вид:
Players:
<br /><br />
<ol>
<f:for each="{players}" as="player">
<li>
<f:link.action action="playerdetails" arguments="{player:player}">
<b>{player.name}</b>
</f:link.action>
</li>
</f:for>
</ol>
Что мне нужно, так это uid выбранного игрока, переданный контроллеру, но не знаю как.