我有一个URLSegment字段在我的银条CMS,我想有一个链接与大写。但在储蓄之后,银条将其改为小写字符串。我找不到,这种行为是在哪里引发的。有谁知道怎么防止吗?
发布于 2014-12-24 02:09:43
类URLSegmentFilter 负责URLSegment的小写转换。,它称为mb_strtotlower。URLSegmentFilter在SiteTreeURLSegmentField中通过函数调用。
重要的是,generateURLSegment函数实际上调用了Silverstripe的扩展系统,所以如果您对SiteTree进行数据扩展,您只需要指定一个名为updateURLSegment的函数,并在Silverstripe所做的工作之上执行您自己的处理。
从上面链接的代码中,传递给updateURLSegement函数的第一个参数将是URL的过滤(小写)版本,第二个参数将是未触及的值。
在这样做时,我会小心地确保您像URLSegmentFilter那样重新实现所有其他过滤代码(减去小写调用),否则它可能会用无效的字符破坏系统。
顺便提一句,我对实际的改变持谨慎态度。URL中的不同情况对任何人都没有帮助,一些用户会认为URL区分大小写,对于某些系统来说很容易做到这一点。我不知道Silverstripe是否会有这样的问题,但我还没有遇到我曾经参与过或帮助过人们的各种项目。
还有一个更快速的方法,使用Silverstripe的函数实现类似的更改,并完全覆盖URLSegmentFilter,尽管这只是最后的手段。
https://stackoverflow.com/questions/27618249
复制相似问题