TYPO3 9 Routing - the parameter gets overwritten by the defaults --一年零八个月后,我们正在尝试更新到TYPO3 10,然后更新到TYPO3 11。正如你所看到的,站点配置完美地工作在für typo3 9上,但现在不再是了。
routeEnhancers:
Werbemittelshop:
type: Extbase
extension: Mwwerbemittelshop
plugin: Mwwerbemittelshop
routes:
-
routePath: '/{categoryname}/{categoryname2}/{categoryname3}'
_controller: 'MwWsCategories::category'
_arguments:
categoryname: mwWsCategory
categoryname2: mwWsCategory2
categoryname3: mwWsCategory3
-
routePath: '/{productname}'
_controller: 'MwWsCategories::product'
_arguments:
productname: mwWsProduct
defaults:
categoryname2: ''
categoryname3: ''
defaultController: 'MwWsCategories::category'
aspects:
categoryname:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
categoryname2:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
categoryname3:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
productname:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwsproducts
routeFieldName: slug“产品名称”的工作方式与预期完全一致。它是一个可读的url,如example.de/test123,它使用控制器的正确操作。
"categoryname2“和"categoryname3”是问题所在。如果我打开example.de/ works 1/它可以工作,但是如果我添加了第二个或第三个参数,我的参数是空的(example.de/works 1/works 2),而且我不理解它。
/**
* action category
*
* @param \MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory
* @param \MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory2
* @param \MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory3
* @return void
*/
public function categoryAction(
\MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory = null,
\MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory2 = null,
\MwWerbemittelshop\Mwwerbemittelshop\Domain\Model\MwWsCategories $mwWsCategory3 = null
)
{
var_dump($this->request->getArguments());
var_dump($mwWsCategory);
exit;你们中有人能发现我的错误吗?我试了这么多版本,但都没有用。如果你有问题或者想要更多的代码,那就去问吧。
提前谢谢。
发布于 2021-12-14 18:50:15
我说不出原因,但如果你把每一种情况定义为自己的路线,这是可行的:
categories
...and是一个没有任何给定参数的默认大小写(或默认值!):
routeEnhancers:
Werbemittelshop:
type: Extbase
extension: Mwwerbemittelshop
plugin: Mwwerbemittelshop
routes:
-
routePath: '/{productname}'
_controller: 'MwWsCategories::product'
_arguments:
productname: mwWsProduct
-
routePath: '/{categoryname}'
_controller: 'MwWsCategories::category'
_arguments:
categoryname: mwWsCategory
-
routePath: '/{categoryname}/{categoryname2}'
_controller: 'MwWsCategories::category'
_arguments:
categoryname: mwWsCategory
categoryname2: mwWsCategory2
-
routePath: '/{categoryname}/{categoryname2}/{categoryname3}'
_controller: 'MwWsCategories::category'
_arguments:
categoryname: mwWsCategory
categoryname2: mwWsCategory2
categoryname3: mwWsCategory3
defaultController: 'MwWsCategories::category'
aspects:
categoryname:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
categoryname2:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
categoryname3:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
routeFieldName: slug
productname:
type: PersistedAliasMapper
tableName: tx_mwwerbemittelshop_domain_model_mwwsproducts
routeFieldName: slughttps://stackoverflow.com/questions/70338204
复制相似问题