TYT3 7.6

时间:2017-06-13 11:08:20

标签: typo3 extbase typo3-7.6.x

嗨我在TYPO3 7.6中有一个扩展名。我有两个动作列表和节目。在我的flexform中有一个可切换的控制器action.list动作正在运行。但表明行动不起作用。请检查我的代码。

柔性成型

                   <switchableControllerActions>
                        <TCEforms>
                            <label>Display Type</label>
                            <onChange>reload</onChange>
                            <config>
                                <type>select</type>
                                <items type="array">
                                    <numIndex index="1" type="array">
                                        <numIndex index="0">List</numIndex>
                                        <numIndex index="1">News->list</numIndex>
                                    </numIndex>
                                    <numIndex index="2" type="array">
                                        <numIndex index="0">Detail</numIndex>
                                        <numIndex index="1">News->show</numIndex>
                                    </numIndex>
                                </items>
                                <minitems>0</minitems>
                                <maxitems>1</maxitems>
                                <size>1</size>
                            </config>
                        </TCEforms>
                    </switchableControllerActions> 

列表视图

  <f:if condition="{news}">
    <ul>
        <f:for each="{news}" as="item">
            <li>
                <f:link.action action="show" controller="News" arguments="{news:'{item}'}" noCacheHash="false" pageUid="{settings.detailPid}" >
                    {item.title}
                </f:link.action>
            </li>
        </f:for>
    </ul>
</f:if>

我从列表页面的配置中选择了列表,并从详细页面中选择了详细信息。列表工作正常,但细节不起作用。

2 个答案:

答案 0 :(得分:1)

尝试添加如下参数:

arguments="{news: item.uid}"
在showAction中你可以得到这样的参数:

$newsId = $this->request->getArgument('news');
$news = $this->newsRepository->findByUid($newsId); 
$this->view->assign('news', $news);

它可以完美地按照您的要求工作。

答案 1 :(得分:1)

  

没有输入任何错误消息。只显示空白页

您可能想要更改第一个

  1. 在php级别(display_errors)检查你的error_reporting
  2. 将您的环境设置为开发(您可以在安装工具中选择预设)
  3. 在安装工具中查找调试选项(所有配置)
  4. 请注意,您不想在生产环境中进行这些调整。

    然后你应该能够看到错误。

      

    我从列表页面的配置中选择了列表并从中选择了详细信息   详细页面。列表工作正常,但细节不起作用。

    您是否已将show动作添加到插件配置中?在扩展名ext_localconf.php

    中查找

    寻找此电话: ExtensionUtility :: configurePlugin

    您的Controller-&gt;动作组合必须存在于您传递的第一个数组参数中。这可能看起来像:

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Vendor.ext_key',
        'News',
        array(
            'News' => 'list,show'
        )
    );
    

    如果使用Controller-&gt;动作组合(与其他组合)传递第4个参数,则可以定义不应缓存的操作。您可以使用它来配置表单操作或可过滤的结果列表。

    注意:总是使用ext_localconf.php和其他引导文件中的完整命名空间,如果你使用“use”语句可能会有另一个致命错误,typo3会连接所有这些引导文件。 < / p>

    另外 - 你可能误解了switchableControllerActions模式。如果您希望一个插件(ce)显示两个动作,则该选项必须为

    <switchableControllerActions>
        <TCEforms>
            ...
            <config>
                <type>select</type>
                <items type="array">
                    ...
                    <numIndex index="3" type="array">
                        <numIndex index="0">List with Details</numIndex>
                        <numIndex index="1">News->list;News->show</numIndex>
                    </numIndex>
                </items>
                ...
            </config>
        </TCEforms>
    </switchableControllerActions> 
    

    所选选项将保存在xml数据结构中并用作配置,因此如果此实例只有一个操作可用,那么您将收到错误。

    如果您使用不同的内容元素来显示列表和详细信息视图,则必须在两个内容元素中选择正确的switchableControllerAction选项。