在为前端登录/注销/注册用户创建新的未缓存小部件时,我无法使其工作。如何从typoscript中调用两个不同的控制器(参见下面的代码)?
我使用的是TYPO3 9.5。知道如何创建一个很重要,因为我需要这些信息来创建许多其他用途的信息。我以前在TYPO3中创建了一个没有widget / controller / action的复杂登录系统。
在ext_localconf.php
,有;
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
VendorName.ExtensionName,
PluginName,
[
'Frontend' => 'index',
'Account' => 'index,login,logout,register'
], [
'Account' => 'login,logout,register'
]);
在文件夹结构Classes/Controller
下有类VendorName\ExtensionName\Controller\AccountController
有;
class AccountController extends AbstractWidgetController {
/**
* @var array
*/
protected $supportedRequestTypes = [
Request::class,
WidgetRequest::class
];
public function initializeAction() {
}
public function indexAction() {
}
public function loginAction() {
return $this->view->assign('raw', 'Hello World');
}
public function logoutAction() {
}
public function registerAction() {
}
/**
* Handles a request. The result output is returned by altering the given response.
*
* @param \TYPO3\CMS\Extbase\Mvc\RequestInterface $request The request object
* @param \TYPO3\CMS\Extbase\Mvc\ResponseInterface $response The response, modified by this handler
*
* @return void
* @api
*/
public function processRequest(RequestInterface $request, ResponseInterface $response) {
#ActionController::processRequest($request, $response);
}
}
并且在ts文件中有;
page = PAGE
page {
...
10 = USER
10 {
...
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = VendorName
extensionName = ExtensionName
pluginName = PluginName
}
}
...
5 = USER_INT
5 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = VendorName
extensionName = ExtensionName
pluginName = PluginName
controller = Account
action = login
}
运行此代码时,PAGE ts使用前端控制器索引操作生成页面,该操作通过流体模板返回原始html。但是当我添加USER_INT部分时,TYPO3会耗尽内存并显示空白页面。
窗口小部件是流体模板中使用的一种ViewHelper。根据你的描述,我认为你想要一个插件。你的Controller类需要扩展TYPO3\CMS\Extbase\Mvc\Controller\ActionController
,而不是TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\AbstractWidgetController
。