如何通过打字稿中的多个操作将小部件设为 运行?
How to get a widget to run with multiple actions from typoscript?
在前端为 login/logout/registering 用户创建一个新的未缓存小部件时,我无法让它工作。如何从打字错误中调用两个不同的控制器(请参阅下面的代码)?
我正在使用 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
下有 class 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 使用前端控制器索引操作生成页面,该操作 returns 原始 html 通过流体模板。但是当我添加 USER_INT 部分时,TYPO3 内存不足并显示空白页。
小部件是 Fluid 模板中使用的一种 ViewHelper。根据您的描述,我认为您需要一个插件。为此,您的控制器 class 需要扩展 TYPO3\CMS\Extbase\Mvc\Controller\ActionController
,而不是 TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\AbstractWidgetController
。
在前端为 login/logout/registering 用户创建一个新的未缓存小部件时,我无法让它工作。如何从打字错误中调用两个不同的控制器(请参阅下面的代码)?
我正在使用 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
下有 class 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 使用前端控制器索引操作生成页面,该操作 returns 原始 html 通过流体模板。但是当我添加 USER_INT 部分时,TYPO3 内存不足并显示空白页。
小部件是 Fluid 模板中使用的一种 ViewHelper。根据您的描述,我认为您需要一个插件。为此,您的控制器 class 需要扩展 TYPO3\CMS\Extbase\Mvc\Controller\ActionController
,而不是 TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\AbstractWidgetController
。