[英]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.