2

나는 CI를 배우려고하고있는 척하고 테스트 프로젝트로 그룹 구매 사이트를 만들고있다. 내가 좋아하는 것 무엇MVC - URI에 컨트롤러가 없습니까?

각 도시의 다른 페이지를 가지고있다, 예를 들면 : 나는 경우

http://www.groupon.com/learn 
http://www.groupon.com/contact-us 

:

http://www.groupon.com/las-vegas/ 
http://www.groupon.com/orlando/ 

나는 또한 같은 다른 페이지를하고 싶습니다 CI에서 이것을 구축하고 MVC 이데올로기에 따라 어떻게 작동할까요? .

URI Routing이 들어오는 곳이다
http://www.domain.com/controller/view/segment_a/segment_b/etc... 
+1

내가보고 있어야하는 곳에서 다시 매핑 중입니까? http://codeigniter.com/user_guide/general/controllers.html#remapping –

답변

2

존재하지 않는 경로의 catch-all 역할을하는 맞춤 404 컨트롤러를 만드는 것입니다.

URI를 가져 와서 유효성을 검사하고 예를 들어 "도시"컨트롤러로 다시 라우팅합니다.

도시 컨트롤러가 도시를 찾을 수없는 경우 (지정된 문자열이 무엇이든) 적절한 404를 발급해야합니다. 그렇지 않으면 해당 도시에 대한 정보를 표시하는 것이 좋습니다.

사용자 정의 404 컨트롤러를 만든 후에는 '404_override'라는 경로를 지정하여 404 오류를 모두 보낼 수 있습니다.

1

그러나 귀하의 경우에 당신은 아마 첫 번째로 경로를 정의 자르해야 할 것이다 테니 : 나는의 개념에 원하는 URL을 달성하는 방법을보고 어려움에 봉착 경로의 일부분 만 이미 가변 부분입니다.

1

이것은 MVC와는 아무런 관련이 없으며, 좋은 URL과 관련이 있습니다.

사용자 관점에서 명확한 URL과 (b) URL 처리 방법에 대한 힌트를 제공하는 URL을 찾고 있습니다.

나는이 경우에 할 것보다 오히려 약간 그렇게 URL을 재 설계 무엇 :

http://www.groupon.com/destinations/las-vegas/ 
http://www.groupon.com/destinations/orlando/ 

비트를 처음에 :

http://www.groupon.com/las-vegas/ 
http://www.groupon.com/orlando/ 

당신은 다음과 같습니다 URL이 것 - /destinations/ - URL 라우팅 코드에서 어떤 컨트롤러를 사용해야하는지 결정할 때이 코드를 사용할 수 있습니다.

$routes = array(
    '/destinations/' => 'on_destination_list', 
    '/destinations/(.+)' => 'on_destination', 
    '/(.*)' => 'on_page'); 

// Basic URI routing code based off of REQUEST_URI 
foreach ($pattern => $func) { 
    if (preg_match("`^$pattern$`", $_SERVER['REQUEST_URI'], $placeholders)) { 
     array_shift($placeholders); 
     call_user_func($func, $placeholders); 
    } 
} 

가 명심 난 내 머리 위로 떨어져 코드를 라우팅하고 절대적으로 정확하지 않을 수 있음을 썼다 : 라우팅 코드는 URL 기반 인 경우,이 같은 배열이있을 수 있습니다. 그것은 당신에게 당신이해야 할 일의 요지를 제공해야합니다.

이렇게하면 누군가가 http://www.groupon.com/destinations/으로 이동하면 목적지 목록을 표시 할 수있는 이점이 있습니다.

+0

멋진 글을 주셔서 감사합니다. 정말 URI에 컨트롤러가없는 것을 찾고있었습니다. 그건 내 질문에 진짜 groupon 페이지이며, 나는 그것이 가장 의미가 이런 식으로 생각합니다. –

+1

컨트롤러에 직접 매핑되지 않습니다.나는 명확하게하기 위해 예제에 추가했습니다. 다른 방법으로는'/ learn'과'/ about-us'와 같이 먼저 라우트 할 URI 경로를 찾아 내고 기존 라우트와 일치하지 않는 경로는 목적지 이름으로 취급합니다. 모든 것이 똑같은 것이지만, URI는 다르게 설계됩니다. –

+0

예, 많은 의미가 있습니다. +1 –

관련 문제