Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 在插件中设置extbase控制器操作_Typo3_Extbase_Typo3 4.5 - Fatal编程技术网

Typo3 在插件中设置extbase控制器操作

Typo3 在插件中设置extbase控制器操作,typo3,extbase,typo3-4.5,Typo3,Extbase,Typo3 4.5,我用扩展生成器在TYPO3 4.5站点中设置了一个extbase扩展,其中只包含控制器中的默认listAction 现在我想添加一个新操作,但它不起作用 我不需要(也就是说,无法工作)flexform来选择控制器操作 由于有一个“插件模式”字段,我想我可以在这里手动输入操作: 并在ext_localconf.php中扩展插件配置: Tx_Extbase_Utility_Extension::configurePlugin( $_EXTKEY, 'Pluginname',

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

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

我不需要(也就是说,无法工作)flexform来选择控制器操作

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

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

Tx_Extbase_Utility_Extension::configurePlugin(
    $_EXTKEY,
    'Pluginname',
    array(
        'Controllername' => 'list,listfeatured',
    ),
);
另外,在控制器中,我添加了一个新动作

/**
 * action listfeatured
 *
 * @return void
 */
public function listfeaturedAction() {
    // do something
}
但是,唉,根本不需要采取行动

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


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

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

另一个选项是创建另一个插件,默认操作为
listfected

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

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

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

如果您希望能够在be中使用它,您可能还需要在
ext_tables.php中
registerPlugin
(如果ie.plugin仅与TS一起放置,则可以使用)。您可以使用:

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

现在,我正在开发一个插件,并希望区分modi。一些modus 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进行的测试

谢谢!那么,插件模式字段的用途是什么?我可以通过php访问它吗?不知道:D以前没有看到过;)您使用哪个版本的Builder?它不是由其他开发人员手动添加的吗?哦!这就是为什么它是不可见的?!:-)只是一个快速跟进:第二个插件工作完美无瑕。我甚至不需要控制器动作,我可以用视图助手来完成。有没有办法跳过第二个控制器,但为该插件的视图分配一个不同的模板(配置上的约定似乎迫使该结构…)来拯救-再次感谢!我的第二个插件运行良好。最后一个问题有点理论性和混乱,没关系。关于plugin mode字段:可能在较新的TYPO3版本中不推荐使用。我现在发现:啊,有趣!除了干扰
Tx\u Extbase\u Utility\u Extension::configurePlugin
,您认为这可以用来定义要运行的控制器吗?请告诉我:-)您所说的“控制器”是什么意思?在Typo3中,我看到了插件,T3核心将插件调用转发给我的插件代码、模板和其他组件。T3核心中有几个控制器处理URL吗?我的问题是关于TYPO3 6.x中的extbase,在一个扩展中可以有不同的控制器。这就是参数“Controllername”中提供的内容(参见原始示例)。我承认我不确定我说的是控制器还是“控制器动作”。可以说,它是MVC扩展的“do”部分