【问题标题】:How to call a controller action on every page request如何在每个页面请求上调用控制器操作
【发布时间】:2019-05-16 12:37:47
【问题描述】:

我有一个包含各种操作的插件,这是我每次请求页面时都想调用的操作之一。我尝试了this 的方式,但是当我在同一页面上有插件时(可以说它是一个联系表单)然后插件不知道其他操作,所以我每次都必须在switchableControllerActions 中包含所有操作.

还有其他方法吗?也许在某种钩子中注册控制器的动作?

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

    也许你可以创建扩展的 lib 对象,看看下面的用户函数:

    lib.myData = USER
    lib.myData {
      userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
      extensionName = Ext
      pluginName = pluginName
      vendorName = MyVendor
    
      switchableControllerActions {
            MyController{
              1 = myAct
            }
      }
    
      settings < plugin.tx_ext.settings
      settings {
            // Your settings
      }
    }
    

    现在,您可以将 lib 对象调用到流体模板(根据每个页面的需要),您可以将此对象添加到主页面布局。

    HereGeorg Ringer 创建了相同的代码来使用 Typoscript 呈现新闻列表。

    希望对您有所帮助!

    【讨论】:

    • 这正是我试图做的。但随后其他操作不起作用,typo3 告诉我这些操作是不允许的。
    • 我猜这不是用户功能的问题,here 是 Dimitri L. 的解决方案,可能会对您有所帮助。
    • 不知何故,我认为这不是我真正需要的。例如,它开始我不需要视图。只是为了描述我尝试调用的操作的功能,我想删除一些 cookie,并在用户包含特殊 cookie 时将其重定向到特定页面。
    【解决方案2】:

    好的,我收到了提示,这就是解决方案:

    20 = USER_INT
    20 {
        userFunc = Vendor\Extension\UserFunc\Class->function
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 FlexForms 设置预设的 Controller->Action。因此,即使您在一个页面上使用了两次插件,您也可以通过 FlexForm 控制每个插件的 Controller->Action。

      也许这对一口井有帮助: Multiple controllers in an extension

      【讨论】:

      • 我认为这行不通。因为他告诉我缺少的动作不是最初显示表格的动作。这是某种登录。在表单中,我有一个操作来处​​理登录过程。 “loginMail”,他告诉我的那个动作不可用。
      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2014-06-30
      • 2016-07-23
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多