簡體   English   中英

如何使用自定義映射器 TYPO3 9.5 從 URL 隱藏 arguments?

[英]How to hide arguments from URL with a custom mapper TYPO3 9.5?

Previously my URL without implementing a custom mapper looked like this: https:\mydomain.com?tx_myextension%5Baction%5D=boat-action&tx_myextension%5BboatId%5D=boat-id&tx_myextension%5BboatName%5D=boat-name&tx_myextension%5Bcontroller%5D=boat -controller&cHash=哈希

通過擴展自定義方面實現自定義 URL 映射器后,我達到了這個解決方案: https:\mydomain.com/boat-name/boat-id

我想要實現的是從 URL 中隱藏船 ID ,ID 不存儲在表中,並且需要從頁面加載數據。

生成鏈接的 Html

<f:link.action  
    class="call-to-action horizontal" 
    action=“boat-action” 
    controller=“boat-controller”
    arguments="{
        boatId: '{boat.id}',
        boatName: '{boat.urlName}'
    }" 
    pageUid="218"
>

config.yaml

routeEnhancers:
    BoatName:
      type: Extbase
      limitToPages:
        - 218
      extension: myextension
      plugin: Singleboat
      routes:
        - routePath: '/{boatName}/{boatId}'
          _controller: Boat::boat-controller
      aspects:
        boatId:
          type: BoatNameMapper
        boatName:
          type: BoatNameMapper

自定義映射器 class

class BoatNameMapper implements StaticMappableAspectInterface
{
    use SiteLanguageAwareTrait;

    /**
     * {@inheritdoc}
     */
    public function generate(string $value): ?string
    {
        return $value !== false ? (string)$value : null;
    }

    /**
     * {@inheritdoc}
     */
    public function resolve(string $value): ?string
    {
        return isset($value) ? (string)$value : null;
    }
}

如果您希望您的船 ID 在 URL 中,請不要放入。(config.yaml)

特別是:使您的 controller 獨立於船 ID。 否則,您需要在 URL 中使用它。


也許可以接受的解決方案是船名和船名的另一種編碼。

怎么樣: - routePath: '/{boatName}-{boatId}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM