2014-03-03 4 views
1

Laravel 4로 웹 서비스를 만들고 있는데 선택적 매개 변수와 관련된 문제가 있습니다. 아래 :: 예를 들어, 몇 가지 필터와 검색 페이지에 대한 결과를 렌더링Laravel 4 복수 및 선택적 get 매개 변수로 경로 지정

http://webservices.example.com/city/mumbai/q/hospital/

시나리오를 고려 category and location과 페이지 매김을위한 물론 매개 변수. 이제 이러한 필터 매개 변수는 선택 사항 일 수 있으며 사용자가 필터를 선택하는 방법에 따라 미리 정의 된 순서를 가질 수 없습니다. 그래서 다음 URL 양식이 가능 말할 수 http://webservices.example.com/city/mumbai/q/north/locality/myarea/category/eye-hospital

내가 app/routes.php에 있었다 단일 URL의 형태로 정의했다 오류가 도움이되지 않았다

http://webservices.example.com/city/mumbai/q/north/category/eye-hospital/locality/my-area

http://webservices.example.com/city/mumbai/q/north/locality/myarea.

Route::get('/city/{city}/q/{q}/locality/{locality}/category/{category}', 
     array('before' => 'check_city|check_query', 'uses' => '[email protected]')); 

유래를 참조 후, 나는이 링크를 내가 잘 작동되고 다른 순열과 조합에 대해 여러 경로 정의를 만든 후 Laravel 4 optional parameter 을 보았다. 그러나 만약 내 매개 변수가 더 많으면, 모든 순열을 정의하는 것이 불가능합니다. 그래서 나는 더 좋은 길을 찾고 있습니다.

어떤 도움을 주셔서 감사합니다!

답변

0

나는 모든이 코드를 테스트하지 못했지만,이 같은 시도 할 수 있습니다 : 당신의 SearchController의 @의 searchData에서 다음

Route::get('{:params}', array('uses' => '[email protected]))->where('params', '.+'); 

:

public function searchData($search = null) 
{ 
     $params = $this->extractSearchParams($search); 

     // do other stuff here with params 
} 

protected function extractSearchParams($search) 
{ 
     $parts = explode($search, '/'); 

     $params = array(); 

     foreach ($i = 0; $i < count($params); $i += 2) 
     { 
      $params[$parts[$i]] = $parts[$i + 1]; 
     } 

     return $params; 
} 
관련 문제