하이픈 문자가있을 때 Kohana의 URL을 라우팅하는 일반적인 방법이 있습니까?
문제
Kohana는 자동으로 URL과 같은 URL을 설정합니다
http://www.example.com/controller/method/argument1/argument2/etc
이제 대시를 사용하여 URL에서 내 단어를 분리하고 싶습니다.
http://www.example.com/business-hub
내 컨트롤러의 제목은 BusinessHub_Controller입니다. 저를 성가신 것은/Business-Hub/가 Busineshub 컨트롤러와 일치하는 것입니다. Application/Config 폴더 아래에서 lours.php에 사용자 정의 항목을 추가해야합니다. 또한 하나를 추가 해야하는 것 같습니다 모든 실제로 성가신 방법. 예를 들어, 여기에 발췌가 있습니다.
$config['business-hub'] = 'businesshub/index/';
$config['business-hub/logout'] = 'businesshub/logout';
$config['business-hub/media-releases'] = 'businesshub/mediareleases';
분명히, 이것은 정말로 성가신 일입니다. 어쨌든 Kohana에게 URL을 Camelcase 이름으로 변환하라고 말할 수 있습니까?
$urlController = 'business-hub';
$correctController = str_replace('-', ' ', $urlController);
$correctController = ucwords($correctController);
$correctController = str_replace(' ', null, $correctController);
$correctController = $correctController . '_Controller';
해결책
대시를 벗기는 대신, 나는 그것들을 밑줄로 변환했다. 그리고 나는 후크를 사용하여 그것을 할 것입니다. config/config.php에서 후크가 활성화 된 다음, dashes_to_underscores.php :이라는 후크에서 파일을 만듭니다.
function convert_dashes_to_underscores_in_url()
{
Router::$current_uri = str_replace('-', '_', Router::$current_uri);
}
Event::add_before(
'system.routing',
array('Router', 'setup'),
'convert_dashes_to_underscores_in_url');
다른 팁
Camelcase 변형을 위해서는 모르겠지만 이와 같은 것이 작동해야합니다.
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
Kohana의 경로 부분은 정규 표현입니다.
물론 이것은 귀하가 제공 한 사례로 심각하게 제한됩니다.
제휴하지 않습니다 StackOverflow