在插件中设置extbase Controller Action

时间:2014-02-04 16:11:13

标签: typo3 extbase typo3-4.5

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

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

我不需要(也就是无法开始工作)flexform来选择控制器动作。

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

typo3 plugin mode

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

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

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

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

但是,唉,行动根本没有被召唤。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

如果您希望能够在BE中使用它,则可能还需要registerPlugin中的ext_tables.php(如果ie。插件只能与TS一起放置,则可以省略)。您将使用以下内容执行此操作:Tx_Extbase_Utility_Plugin::registerPlugin

答案 1 :(得分:2)

除了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版测试的。