하이픈 문자가있을 때 Kohana의 URL을 라우팅하는 일반적인 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1004716

  •  05-07-2019
  •  | 
  •  

문제

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의 경로 부분은 정규 표현입니다.

물론 이것은 귀하가 제공 한 사례로 심각하게 제한됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top