【问题标题】:Set extbase Controller Action in plugin在插件中设置 extbase Controller Action
【发布时间】:2014-02-28 17:15:45
【问题描述】:

我在 TYPO3 4.5 站点中使用扩展构建器设置了一个 extbase 扩展,其中仅包含控制器中的默认 listAction。

现在我想添加一个新动作,但它不起作用。

我不需要(又名。无法开始工作)弹性表单来选择控制器操作。

由于有一个“插件模式”字段,我想我可以在这里手动输入操作:

并在 ext_localconf.php 中扩展插件配置:

Tx_Extbase_Utility_Extension::configurePlugin(
    $_EXTKEY,
    'Pluginname',
    array(
        'Controllername' => 'list,listfeatured',
    ),
);

另外,在控制器中,我添加了一个新动作。

/**
 * action listfeatured
 *
 * @return void
 */
public function listfeaturedAction() {
    // do something
}

但是,唉,根本没有调用这个动作。

我是否将“插件模式”字段解释错了? 我错过了什么吗?

或者:我也可以通过 TS 为“后端”插件设置操作吗?

【问题讨论】:

    标签: typo3 extbase typo3-4.5


    【解决方案1】:

    除了 FlexForm 之外,还有另一种方法可以使用 PHP 读取插件中的插件模式字段。

    现在,我正在开发一个插件,并希望区分 modi。一些方式 B 应该从请求的一开始就设置,更好的是它不应该通过 HTTP 发送,而是从数据模型中读取。

    所以我在“插件模式”字段中设置了文本“myModusB”,并在我检查的插件中:

    exit (print_r($this, true));
    

    然后我找到了

    [cObj] => TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer Object
        ...
        [data] => Array
                (
           ...
           [select_key] => myModusB
           ...
    

    所以在插件中通过写

    $modus = $this->cObj->data["select_key"];
    

    我会得到文本并可以处理它。

    这是针对版本 6.1.3 进行测试的。

    【讨论】:

    • 啊,有趣!除了干扰Tx_Extbase_Utility_Extension::configurePlugin,你觉得这可以用来定义运行哪个控制器吗?
    • 启发我 :-) 你所说的“控制器”是什么意思?在 Typo3 中,我看到了插件、将插件调用转发到我的插件代码的 T3 核心、模板和其他组件。 T3 核心中是否有多个控制器可以处理 URL?
    • 我的问题是关于 TYPO3 6.x 中的 extbase,扩展中可以有各种控制器。这就是参数“Controllername”中提供的内容(参见原始示例)。我承认我不确定我的意思是称为控制器还是“控制器动作”。它是 MVC 扩展的“做”部分,可以这么说
    【解决方案2】:

    您需要正确使用 FlexForm 来设置可切换动作列表。

    其他选项是创建另一个默认操作为listfeatured的插件。

    如果您决定只使用单个插件,您只需向我们展示/描述您在 FlexForm 中尝试了什么(可能是新问题)

    编辑:正如您在问题中向我们展示的那样,您决定哪个 Controlleraction 是给定插件的默认值,因此要添加将使用现有控制器的新插件,只需将其添加到您的 ext_localconf.php

    Tx_Extbase_Utility_Extension::configurePlugin(
        $_EXTKEY,
        'MyFeaturedPlugin',
        array(
            'Controllername' => 'listfeatured',
        ),
    );
    

    如果您希望能够在 BE 中使用它,您可能还需要在您的 ext_tables.php 中添加 registerPlugin(可以省略,即插件应仅与 TS 一起放置)。你会这样做:Tx_Extbase_Utility_Plugin::registerPlugin

    【讨论】:

    • 谢谢!那么插件模式字段是做什么用的?我可以通过php访问它吗?
    • 不知道 :D 之前没见过 ;) 你使用哪个版本的 Builder?不是其他开发者手动添加的吗?
    • 哦!这就是为什么它是不可搜索的?! :-) - 快速跟进:第二个插件完美无缺。我什至不需要控制器操作,我可以使用视图助手来完成。有没有办法跳过第二个控制器,但为该插件的视图分配不同的模板(尽管配置的约定似乎强制了该结构......)
    • 救援 - 再次感谢!我的第二个插件工作正常。最后一个问题有点理论和混乱,没关系。关于插件模式字段:可能在较新的 TYPO3 版本中已弃用。我现在发现了这个:lists.typo3.org/pipermail/typo3-project-typo3v4mvc/2011-January/…
    猜你喜欢
    • 2016-12-22
    • 2015-04-18
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多