1

我正在构建更复杂的 url,我希望它们很好,并且没有不需要的信息。

因此,我不想在我的 url 中有typo3 控制器。<f:link.page>我通过使用而不是链接将其修复为普通链接<f:link.action>

现在我想对表单的唯一流体执行相同的操作,自动将控制器广告到链接。我尝试了以下表单代码,但它也添加了当前控制器:

<f:form class="limitform" method="post" enctype="multipart/form-data" pageUid="1" additionalParams="{extension: {page: '1'}}">

有没有办法不添加控制器?

4

2 回答 2

0

您可以在 RealURL 配置中删除控制器和/或操作。下面是一个示例,它从详细链接中删除了动作和控制器。

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array (
    '_DEFAULT' => array (
        'init' => array (
            'enableCHashCache' => '1',
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => '1',
            'enableUrlEncodeCache' => '1',
        ),
        'fixedPostVars' => array (
                'yourDetailConfiguration' => array(
                        array(
                                'GETvar' => 'tx_yourext_pi[action]',
                                'valueMap' => array(
                                        'detail' => '',
                                ),
                                'noMatch' => 'bypass'
                        ),
                        array(
                                'GETvar' => 'tx_yourext_pi[controller]',
                                'valueMap' => array(
                                        'Event' => '',
                                ),
                                'noMatch' => 'bypass'
                        ),
                        array(
                                'GETvar' => 'tx_yourext_pi[event]',
                                'lookUpTable' => array(
                                        'table' => 'tx_yourext_domain_model_yourtable',
                                        'id_field' => 'uid',
                                        'alias_field' => 'title',
                                        'addWhereClause' => ' AND NOT deleted',
                                        'useUniqueCache' => 1,
                                        'useUniqueCache_conf' => array(
                                                'strtolower' => 1,
                                                'spaceCharacter' => '-'
                                        ),
                                        'languageGetVar' => 'L',
                                        'languageExceptionUids' => '',
                                        'languageField' => 'sys_language_uid',
                                        'transOrigPointerField' => 'l10n_parent',
                                        'autoUpdate' => 1,
                                        'expireDays' => 180,
                                )
                        )
                ),
                '123' => 'yourDetailConfiguration',
        ),
);

请注意,您必须将每个页面 UID与您的插件(在本例中为第 123 页,其中包含一个详细信息页面)分配给所需的配置。

有关这方面的更多信息可以在新闻扩展的扩展手册中找到。在那里,您还将找到上述解决方案的替代方案,用于删除控制器/动作。

于 2015-05-04T06:30:38.120 回答
0

最好的方法是使用“fixedPostVars”(请参阅​​其他答案)构建口语 url,然后使用来自 realurl 的 encode Hook 清理较长的 url:

// Replace
$TYPO3_CONF_VARS['EXTCONF']['realurl']['encodeSpURL_postProc'] = array('user_encodeSpURL_postProc');
$TYPO3_CONF_VARS['EXTCONF']['realurl']['decodeSpURL_preProc'] = array('user_decodeSpURL_preProc'); //

function user_encodeSpURL_postProc(&$params, &$ref) {
    $params['URL'] = str_replace('auto/contoller/Ads/', 'auto/Ads', $params['URL']);
}

function user_decodeSpURL_preProc(&$params, &$ref) {
    $params['URL'] = str_replace('auto/Ads', 'auto/contoller/Ads/', $params['URL']);
}
于 2015-05-04T20:19:24.180 回答