如何防止Silverstripe将URLSegment字段值更改为小写?

时间:2014-12-23 10:13:21

标签: validation silverstripe

我的Silverstripe CMS中有一个URLSegment字段,我希望在那里有大写​​的链接。但保存后,Silverstripe将其更改为小写字符串。我无法找到触发此行为的位置。有谁知道,如何预防?

1 个答案:

答案 0 :(得分:2)

课程URLSegmentFilter is responsible for the lower case conversion of the URLSegment,调用mb_strtotlowerURLSegmentFilter通过Sitetree's generateURLSegment function调用SiteTreeURLSegmentField

要消除这一点的重要部分是generateURLSegment函数实际上调用了Silverstripe的扩展系统,所以如果你做SiteTree的数据扩展,你只需要指定一个名为{{1的函数并且在Silverstripe的基础上进行自己的处理。

从我上面链接的代码中,传递到updateURLSegment函数的第一个参数将是URL的过滤(和小写)版本,第二个参数将是未触及的值。

执行此操作时,我会小心确保您重新实现updateURLSegement所做的所有其他过滤代码(减去小写调用),否则可能会破坏系统中的无效字符。

对此,我会谨慎地做这个改变。在URL中具有不同的大小写对任何人都没有帮助,一些用户会认为URL是区分大小写的,对于某些系统来说很容易。我不知道Silverstripe是否会遇到这个问题,我没有遇到过我所做过的或帮助过各种各样的项目。

另一个快速的事情是,还有另一种方法可以使用Silverstripe的Object::useCustomClass function实现类似的更改并完全覆盖URLSegmentFilter,尽管只使用它作为最后的手段。