2017-03-21 1 views
0

Laravel 5.3에서 페이지 매김 예쁜 URL을 얻을 수있는 방법이 있습니까?Laravel 5.3 페이지 매김 API URL이 예쁘다.

검색 키워드는 다음과 같습니다 : something new

http://localhost/project/search/something%20new?page=2

{ 
    "total": 19, 
    "per_page": 5, 
    "current_page": 1, 
    "last_page": 4, 
    "next_page_url": "http://localhost/project/search/something%20new?page=2", 
    "prev_page_url": null, 
    "from": 1, 
    "to": 5, 
    "data": [ 
    { 
    // result 
    } 
    ] 
} 

내가 좀하고 싶습니다 무엇 : 또한

http://localhost/project/search/?page=2 

, 페이지 매김을 예를 들어, 기본적으로

이 방법으로 렌더링해야하며 페이지 매김에 추가해야합니다. 이런 식으로 나타납니다.

컨트롤러.

Route::post('search/',array('uses' => '[email protected]')); 

요청 및 응답 위입니다

public function search(Request $request) 
{ 
    $search = $request->name; 

    $searchValues = preg_split('/\s+/', $search, -1, PREG_SPLIT_NO_EMPTY); 

    $result = abcModel::where(function ($q) use ($searchValues) { 
     foreach ($searchValues as $value) { 
      $q->orWhere('city', 'like', "%{$value}%"); 
      $q->orWhere('country', 'like', "%{$value}%"); 
      $q->orWhere('name', 'like', "%{$value}%"); 
      } }) 
     ->orderby('id','desc') 
     ->paginate(20); 

    return response()->json($result); 
} 

경로 ..

답변

1

당신은 POST를 통해 쿼리 문자열을 보낼 수있는 검색 경로에 사용되는 HTTP 방식을 전환 할 필요가 대신 할 GET .

Route::get('project/search/{query}', '[email protected]'); 

이만큼 당신이 요청과 실제 데이터를 처리하는 것처럼

Route::post('project/search/', '[email protected]'); 

같은 것을 변경 될 : 그래서, 코드없이 난 당신이 다음과 같이 설정 경로를 가정하고 게시 컨트롤러에 전달 된 객체가 POST 본문에서 GET 쿼리 매개 변수와 동일한 이름을 유지하면 코드가 필요하면 최소한 수정해야합니다.

page 매개 변수를 POST 본문에서도 처리 할 수 ​​있으며 URL은 http://localhost/project/search/으로 남겨 둡니다.

+0

업데이트 된 컨트롤러 및 경로를 확인하십시오. –

+0

업데이트 된 경로는 여전히 URL에 GET 매개 변수로 검색 쿼리를 포함합니다. 그걸 제거해야합니다. 또한 컨트롤러에 대한 인수가 잘못되었습니다. 함수 정의는'public function search (Request $ request)'이어야하고'Request' 클래스의'input()'메소드로 값을 검색해야합니다. 요청 클래스의 문서는 https://laravel.com/docs/5.3/requests –

+0

에서 확인하십시오. –