TYPO3 类型为 xxx\\yyy\\Domain\\Model\\User 的对象,身份为 \"1\" 未找到。
TYPO3 Object of type xxx\\yyy\\Domain\\Model\\User with identity \"1\" not found."
我想将自定义 FrontendUser 添加到组控制器中的组(与前端组无关)。
Extbase 不知何故可以通过 uid 找到我的组,但不能通过 uid 找到我指定的用户。
我在 GroupController 中的操作是:
/**
* action addUser
* @param \xxx\Yyy\Domain\Model\Group $group
* @param \xxx\Yyy\Domain\Model\User $user
*
* @return void
*/
public function addUserAction(\xxx\Yyy\Domain\Model\Group $group, \xxx\Yyy\Domain\Model\User $user)
{
$group.addUser($user);
return "ok";
}
我的错误异常是:
{"error":"TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException #1297933823: Object of type xxx\Yyy\Domain\Model\User with identity \"1\" not found."
,"trace":["TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter->fetchObjectFromPersistence(2 Arguments)"
,"TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter->convertFrom(4 Arguments)"
,"TYPO3\CMS\Extbase\Property\PropertyMapper->doMapping(4 Arguments)"
,"TYPO3\CMS\Extbase\Property\PropertyMapper->convert(3 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Controller\Argument->setValue(1 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Controller\AbstractController->mapRequestArgumentsToControllerArguments()"
,"TYPO3\CMS\Extbase\Mvc\Controller\ActionController->processRequest(2 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Dispatcher->dispatch(2 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Web\FrontendRequestHandler->handleRequest()"
,"TYPO3\CMS\Extbase\Core\Bootstrap->handleRequest()"
,"TYPO3\CMS\Extbase\Core\Bootstrap->run(2 Arguments)"
,"xxx\Yyy\Rest\Helper->callExtbasePlugin(6 Arguments)"
,"xxx\Yyy\Rest\GroupHandler->xxx\Yyy\Rest\{closure}(1 Arguments)"
,"Cundd\Rest\Router\Route->process(1 Arguments)"
,"Cundd\Rest\Router\Router->dispatch(1 Arguments)"
,"Cundd\Rest\Router\ResultConverter->dispatch(1 Arguments)"
,"Cundd\Rest\Dispatcher->callHandler(1 Arguments)"
,"Cundd\Rest\Dispatcher->getCachedResponseOrCallHandler(2 Arguments)"
,"Cundd\Rest\Dispatcher->dispatch(2 Arguments)"
,"Cundd\Rest\Dispatcher->processRequest(2 Arguments)"
,"Cundd\Rest\BootstrapDispatcher->processRequest(2 Arguments)"
,"call_user_func_array(2 Arguments)"
,"TYPO3\CMS\Core\Http\Dispatcher->dispatch(2 Arguments)"
,"TYPO3\CMS\Frontend\Http\EidRequestHandler->dispatch(1 Arguments)"
,"TYPO3\CMS\Frontend\Http\EidRequestHandler->handleRequest(1 Arguments)"
,"TYPO3\CMS\Core\Core\Bootstrap->handleRequest(1 Arguments)"
,"TYPO3\CMS\Frontend\Http\Application->run()"
,"{closure}()"
,"require(1 Arguments)"]}
出于调试目的,我添加了一个 initializeAction:
public function initializeAddUserAction()
{
return var_dump($_POST);
}
结果是:
array(1) {
["tx_yyy_jsonapi"]=>
array(4) {
["controller"]=>
string(5) "Group"
["action"]=>
string(7) "addUser"
["group"]=>
int(1)
["user"]=>
int(1)
}
}
我做错了什么?为什么小组解决得很好,但用户却不行?我在版本 3 中使用 TYPO3 8.7 和其余扩展。
fe_users
将字段 tx_extbase_type
设置为 0。如果我将其设置为 Tx_Yyy_User
,它会起作用。所以问题是我在常规 FrontendUser 和我的自定义前端用户之间没有区别。
我想将自定义 FrontendUser 添加到组控制器中的组(与前端组无关)。
Extbase 不知何故可以通过 uid 找到我的组,但不能通过 uid 找到我指定的用户。
我在 GroupController 中的操作是:
/**
* action addUser
* @param \xxx\Yyy\Domain\Model\Group $group
* @param \xxx\Yyy\Domain\Model\User $user
*
* @return void
*/
public function addUserAction(\xxx\Yyy\Domain\Model\Group $group, \xxx\Yyy\Domain\Model\User $user)
{
$group.addUser($user);
return "ok";
}
我的错误异常是:
{"error":"TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException #1297933823: Object of type xxx\Yyy\Domain\Model\User with identity \"1\" not found."
,"trace":["TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter->fetchObjectFromPersistence(2 Arguments)"
,"TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter->convertFrom(4 Arguments)"
,"TYPO3\CMS\Extbase\Property\PropertyMapper->doMapping(4 Arguments)"
,"TYPO3\CMS\Extbase\Property\PropertyMapper->convert(3 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Controller\Argument->setValue(1 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Controller\AbstractController->mapRequestArgumentsToControllerArguments()"
,"TYPO3\CMS\Extbase\Mvc\Controller\ActionController->processRequest(2 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Dispatcher->dispatch(2 Arguments)"
,"TYPO3\CMS\Extbase\Mvc\Web\FrontendRequestHandler->handleRequest()"
,"TYPO3\CMS\Extbase\Core\Bootstrap->handleRequest()"
,"TYPO3\CMS\Extbase\Core\Bootstrap->run(2 Arguments)"
,"xxx\Yyy\Rest\Helper->callExtbasePlugin(6 Arguments)"
,"xxx\Yyy\Rest\GroupHandler->xxx\Yyy\Rest\{closure}(1 Arguments)"
,"Cundd\Rest\Router\Route->process(1 Arguments)"
,"Cundd\Rest\Router\Router->dispatch(1 Arguments)"
,"Cundd\Rest\Router\ResultConverter->dispatch(1 Arguments)"
,"Cundd\Rest\Dispatcher->callHandler(1 Arguments)"
,"Cundd\Rest\Dispatcher->getCachedResponseOrCallHandler(2 Arguments)"
,"Cundd\Rest\Dispatcher->dispatch(2 Arguments)"
,"Cundd\Rest\Dispatcher->processRequest(2 Arguments)"
,"Cundd\Rest\BootstrapDispatcher->processRequest(2 Arguments)"
,"call_user_func_array(2 Arguments)"
,"TYPO3\CMS\Core\Http\Dispatcher->dispatch(2 Arguments)"
,"TYPO3\CMS\Frontend\Http\EidRequestHandler->dispatch(1 Arguments)"
,"TYPO3\CMS\Frontend\Http\EidRequestHandler->handleRequest(1 Arguments)"
,"TYPO3\CMS\Core\Core\Bootstrap->handleRequest(1 Arguments)"
,"TYPO3\CMS\Frontend\Http\Application->run()"
,"{closure}()"
,"require(1 Arguments)"]}
出于调试目的,我添加了一个 initializeAction:
public function initializeAddUserAction()
{
return var_dump($_POST);
}
结果是:
array(1) {
["tx_yyy_jsonapi"]=>
array(4) {
["controller"]=>
string(5) "Group"
["action"]=>
string(7) "addUser"
["group"]=>
int(1)
["user"]=>
int(1)
}
}
我做错了什么?为什么小组解决得很好,但用户却不行?我在版本 3 中使用 TYPO3 8.7 和其余扩展。
fe_users
将字段 tx_extbase_type
设置为 0。如果我将其设置为 Tx_Yyy_User
,它会起作用。所以问题是我在常规 FrontendUser 和我的自定义前端用户之间没有区别。