如何通过打字稿中的多个操作将小部件设为 运行?

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