Silverstripe CMS에 URLSegment 필드가 있는데 대문자와 링크가 필요합니다. 그러나 저장 후 Silverstripe는 소문자 문자열로 변경합니다. 이 동작이 실행되는 곳을 찾을 수 없습니다. 아무도, 그것을 방지하는 방법을 알고 있습니까?실버 스트라이프가 URLSegment 필드 값을 소문자로 변경하는 것을 방지하려면 어떻게해야합니까?
답변
클래스 URLSegmentFilter
is responsible for the lower case conversion of the URLSegment이면 mb_strtotlower
을 호출합니다. URLSegmentFilter
은 SiteTreeURLSegmentField
에서 Sitetree
's generateURLSegment
function을 통해 호출됩니다.
이 당신이 SiteTree
의 데이터 확장을 할 경우, 당신은 단지 updateURLSegment
를라는 함수를 지정하고 상단에 자신의 처리를 할 필요가 있도록 generateURLSegment
기능이 실제로 Silverstripe의 확장 시스템을 호출하는 것입니다 멀리 취할 수있는 중요한 부분이 무엇인지 Silverstripe 않습니다.
위에서 링크 한 코드에서 updateURLSegement
함수에 전달 된 첫 번째 인수는 필터링 된 URL 버전이며 두 번째 인수는 변경되지 않은 값입니다.
이렇게하면 URLSegmentFilter
(소문자 빼기 호출 제외)과 같은 다른 필터링 코드를 모두 다시 구현해야합니다. 그렇지 않으면 잘못된 문자로 시스템이 손상 될 수 있습니다.
이에 대한 보조 자료로, 실제로이 변경을 수행하는 것에주의해야합니다. URL에 대소 문자를 구별하는 것은 누구에게 도움이되지 않지만 일부 사용자는 URL이 대소 문자를 구분한다고 생각할 수 있으며 일부 시스템의 경우 매우 쉽게 될 수 있습니다. 나는 실버 스트라이프가 그 문제를 안고 있는지 알지 못한다. 내가 일한 다양한 프로젝트에 대해 알지 못했다.
더 빨리 한 가지 방법은 Silverstripe의 Object::useCustomClass
function을 사용하여 유사한 변경을 구현하고 마지막 수단으로 만 사용하는 URLSegmentFilter
을 완전히 대체하는 또 다른 방법입니다.
빠르고 유익한 답변을 해주셔서 감사합니다. 나는'SiteTree'를 확장하면서이 솔루션을 시도했지만 도움이되지 않았습니다.'URLSegmentFilter' ('mb_strtolower' 함수 사용)의'filter' 함수는'SiteTree'의'onBeforeWrite()'에서 호출되기 때문에 도움이되지 않았습니다. , 그래서 내'updateURLSegment' 함수는 CMS의 URLSegment 필드를 편집 할 때 트리거되지 않았습니다. 그래서'Object :: useCustomClass'를 사용하고 오버라이드 된'filter' 함수로 새로운 클래스에서'URLSegmentFilter'를 확장해야했습니다. – user3888130
Ahhhh 좋아, 다행이야. 그것은'onBeforeWrite'에서 너무 불려지는 것을 알기에 유용합니다. 직접 선택하지 않았습니다 :) – Turnerj
- 1. 실버 스트라이프가 인증을 묻습니다.
- 2. UIImagePickerController가 방향을 변경하는 것을 방지하려면 어떻게해야합니까?
- 3. ViewFlipper가 이미지를 잘못 변경하는 것을 방지하려면 어떻게해야합니까?
- 4. Silverlight 4.0에서 수동으로 URL을 변경하는 것을 방지하려면 어떻게해야합니까?
- 5. NULLS가 제거되는 것을 방지하려면 어떻게해야합니까?
- 6. 스레드가 전환하는 것을 방지하려면 어떻게해야합니까?
- 7. 앵커가 스크롤하는 것을 방지하려면 어떻게해야합니까?
- 8. 숭고한 텍스트가 파일에 대한 권리를 변경하는 것을 방지하려면 어떻게해야합니까?
- 9. Event.Resize가 displayState에서 두 번 트리거되도록 FULL_SCREEN로 변경하는 것을 방지하려면 어떻게해야합니까?
- 10. 반응 라우터가 URL을 # 추가하는 것을 방지하려면 어떻게해야합니까?
- 11. InnoSetup 자동 모드에서 재정의되는 것을 방지하려면 어떻게해야합니까?
- 12. 사용자가 wxGrid 셀에 잘못된 값을 입력하는 것을 방지하려면 어떻게해야합니까?
- 13. 페이지를 새로 고치는 것을 방지하려면 어떻게해야합니까?
- 14. 사용자가 특정 양식 필드에 입력하는 것을 방지하려면 어떻게해야합니까?
- 15. 특정 너비의 장치에 이미지가로드되는 것을 방지하려면 어떻게해야합니까?
- 16. force_ssl이 리디렉션에서 params를 파괴하는 것을 방지하려면 어떻게해야합니까?
- 17. 서버가 304로 회신하는 것을 방지하려면 어떻게해야합니까?
- 18. PictureBox가 내부적으로 새로 고쳐지는 것을 방지하려면 어떻게해야합니까?
- 19. asp.net에서 두 목록을 추가하는 것을 방지하려면 어떻게해야합니까?
- 20. 배경색이 상자 그림자를 숨기는 것을 방지하려면 어떻게해야합니까?
- 21. PNG 프레임이 오버플로되는 것을 방지하려면 어떻게해야합니까?
- 22. Adblock이 감지되면 CSS를로드하는 것을 방지하려면 어떻게해야합니까?
- 23. 특정보기에서 항목을 삭제하는 것을 방지하려면 어떻게해야합니까?
- 24. 서비스 메시지가 스팸으로 표시되는 것을 방지하려면 어떻게해야합니까?
- 25. div가 두 줄로 분리되는 것을 방지하려면 어떻게해야합니까?
- 26. JSoup이 인라인 스타일을 재배치하는 것을 방지하려면 어떻게해야합니까?
- 27. GWT가 인라인 스타일을 생성하는 것을 방지하려면 어떻게해야합니까?
- 28. 메서드가 파생 클래스에서 재정의되는 것을 방지하려면 어떻게해야합니까?
- 29. presentModalViewController를 사용하여 기본보기를 숨기는 것을 방지하려면 어떻게해야합니까?
- 30. ListvView에서 뷰가 보이지 않게하는 것을 방지하려면 어떻게해야합니까?
대문자가 URL에 미치는 영향에 대해 알고 계실까요? http://wiredimpact.com/blog/never-use-capital-letters-urls/ – schellmax