使用自定义 userFunc 更改 fixedPostVars 参数
Alter fixedPostVars argument with custom userFunc
我有一个真正的url2 配置,它要求我按所选语言更改给定类别的标题。关键是只有一个数据库记录带有类别标题,翻译是通过 .xlf 文件进行的。
我现在设法替换了标题,但是映射显然不起作用。 realurl 类 中是否有可以轻松添加数据库记录的方法,或者我是否在 $_GET Paramaeters 中自行解码?
'fixedPostVars' => array(
// TODO: Implement dynamic via typoscript if possible!
'3' => array(
array(
'GETvar' => 'tx_products_products[product_categories]',
'userFunc' => function(&$params, $ref) use ($recordTranslator){
$categoryId = $params['value'];
$translation = $recordTranslator->render('Category', 'title', $categoryId, 'products');
$realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
return $translation;
}
),
这是我目前编写的代码。这里的 recordTranslator 只是 returns 我想在 url.
中使用的字符串
我最终用别名、字段、uid、语言等预先填充了我的 "tx_realurl_uniqalias" table
Translated Alias 仍然是通过
创建的
$realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
我在此之前将我的 Iso 语言标签映射到口语。为此,我在我的设置中创建了一个错别字对象。
de {
ch-de = 1
de-de = 3
at-de = 5
}
en {
de-en = 4
}
fr {
ch-fr = 2
}
no {
no = 6
}
并保存了 realurl_conf 提供的语言字段以过滤翻译。像这样:
'GETvar' => 'L',
'valueMap' => array(
'ch-de' => '1',
'ch-fr' => '2',
'de-de' => '3',
'de-en' => '4',
'at-de' => '5',
'no' => '6',
),
'noMatch' => 'bypass',
每当创建新的 "Database Record" 并使用刷新的数据重建它时,我仍然需要在后端清除我的 SpokenUrl 别名,但它有效。
查找是通常的查找table格式:
array(
'GETvar' => 'tx_products_products[product_categories]',
'lookUpTable' => array(
'table' => 'tx_products_domain_model_category',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
我有一个真正的url2 配置,它要求我按所选语言更改给定类别的标题。关键是只有一个数据库记录带有类别标题,翻译是通过 .xlf 文件进行的。
我现在设法替换了标题,但是映射显然不起作用。 realurl 类 中是否有可以轻松添加数据库记录的方法,或者我是否在 $_GET Paramaeters 中自行解码?
'fixedPostVars' => array(
// TODO: Implement dynamic via typoscript if possible!
'3' => array(
array(
'GETvar' => 'tx_products_products[product_categories]',
'userFunc' => function(&$params, $ref) use ($recordTranslator){
$categoryId = $params['value'];
$translation = $recordTranslator->render('Category', 'title', $categoryId, 'products');
$realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
return $translation;
}
),
这是我目前编写的代码。这里的 recordTranslator 只是 returns 我想在 url.
中使用的字符串我最终用别名、字段、uid、语言等预先填充了我的 "tx_realurl_uniqalias" table
Translated Alias 仍然是通过
创建的 $realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
我在此之前将我的 Iso 语言标签映射到口语。为此,我在我的设置中创建了一个错别字对象。
de {
ch-de = 1
de-de = 3
at-de = 5
}
en {
de-en = 4
}
fr {
ch-fr = 2
}
no {
no = 6
}
并保存了 realurl_conf 提供的语言字段以过滤翻译。像这样:
'GETvar' => 'L',
'valueMap' => array(
'ch-de' => '1',
'ch-fr' => '2',
'de-de' => '3',
'de-en' => '4',
'at-de' => '5',
'no' => '6',
),
'noMatch' => 'bypass',
每当创建新的 "Database Record" 并使用刷新的数据重建它时,我仍然需要在后端清除我的 SpokenUrl 别名,但它有效。
查找是通常的查找table格式:
array(
'GETvar' => 'tx_products_products[product_categories]',
'lookUpTable' => array(
'table' => 'tx_products_domain_model_category',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),