【问题标题】:TYPO3 Routing: Multiple Path SegmentsTYPO3 路由:多路径段
【发布时间】:2019-02-05 08:19:21
【问题描述】:

我正在尝试为某些类别生成树 URL。 URL 应如下所示:/category1/subcategory1/subcategory2。 路径段的数量应该是灵活的,因为我不知道类别的深度。

我得到了第一个使用以下配置和 自定义映射器的路径段:

ProductsPlugin:
  type:              Extbase
  limitToPages:
    - 5
  extension:         MyExt
  plugin:            Products
  routes:
    -
      routePath:   '/{category_title}'
      _controller: 'Products::list'
      _arguments:
        category_title: id
  defaultController: 'Products::list'
  requirements:
    category_title: '[0-9]{1..6}'
  aspects:
    category_title:
      type: ProductsValueMapper

映射器如下所示:

<?php

namespace Vendor\MyExt\Routing\Aspect;

use TYPO3\CMS\Core\Routing\Aspect\PersistedMappableAspectInterface;
use TYPO3\CMS\Core\Site\SiteLanguageAwareTrait;

class ProductsValueMapper implements PersistedMappableAspectInterface
{
    use SiteLanguageAwareTrait;

    /**
     * @param string $value
     *
     * @return string|null
     */
    public function generate(string $value): ?string
    {
        /**
         * returns one or more path segments
         * e.g. category1 or category1/subcategory1
         */
        return $slug; 
    }

    /**
     * @param string $value
     *
     * @return string|null
     */
    public function resolve(string $value): ?string
    {
        /**
         * returns the id of the category from the last path segment
         */
        return $id;
    }
}

对于一个单一的类别,它工作正常。但是,一旦请求子类别,代码就会中断。子类别的链接仅包含子类别的路径段,例如/subcategory1,但不是该类别之一。

我很清楚为什么会这样,因为我只将子类别的 id 添加到 LinkViewHelper:&lt;f:link.action controller="Products" action="list" arguments="{id: 5}"&gt;Test Link&lt;/f:link.action&gt;。但我可以

我需要调整哪些螺丝才能使 URL 也适用于任何深度的子类别?

提前致谢!

【问题讨论】:

    标签: typo3 typo3-9.x


    【解决方案1】:

    您必须允许 / 作为要求。默认要求是[^/]+,您只指定了一个数字。

    这应该有效:

    ProductsPlugin:
      requirements:
        category_title: .+
    

    另见 Symfony 文档:https://symfony.com/doc/4.1/routing/slash_in_parameter.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2020-04-14
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      相关资源
      最近更新 更多