2014-12-24 2 views
1

몇 가지 자습서를 따른 후 첫 번째 기본 laravel 웹 응용 프로그램을 구축하고 있습니다.이 스크립트가 제가 직접 조작하고있는 첫 번째 튜토리얼입니다. 컨트롤러로 라우팅 한 다음 올바른 URL을 얻는 데 문제가 있습니다.Laravel 라우팅 및 검색 용 컨트롤러

이 시점에서 이상적으로 두 개의 경로 //{user} 만 있어야합니다. 홈페이지에서 사용자 양식을 검색하면 양식에서 /{user}으로 이동해야합니다.

경로는 (나는 여전히이 작업을 얻을 세 가지 원인을 시도하고 있고, 나는 내가 POST를 필요가 있다고 생각) :

Route::get('/', '[email protected]'); 
Route::get('/{user}', '[email protected]'); 
Route::post('/', '[email protected]'); 

홈 컨트롤러 :

public function index() 
{ 
    return View::make('helpdesk'); 
} 

public function student($user) { 
    return View::make('selfservice') 
     ->with('user', $user); 
} 

public function studentLookUp() { 
    $user = Input::get('ID'); 

    return View::make('selfservice') 
     ->with('user', $user); 
} 

형태 :

{{ Form::open(array('class'=>'navbar-form navbar-left', 'role'=>'search'), array('action' => '[email protected]')) }} 

    <div class="form-group"> 
    {{ Form::text('ID', '', array('placeholder'=>'ID', 'class'=>'form-control')); }} 
    </div> 

    {{ Form::button('Search', array('class'=>'btn btn-default')) }} 

{{ Form::close() }} 

이 시점에서 홈페이지 ('/')에서 검색 할 수 있으며 다시 홈페이지로 이동하지만 검색된 fo r 사용자는 올바른 URL 인 homepage.com/username을 제외하고는 어떻게 작동 시키길 원합니까?

도움이 될 것입니다.

1. 검색 경로 : 등록 검색 경로

+0

당신은 '/ {사용자}'경로는 :: (수'의미 , 'HomeController @ student');'작동하지 않습니까? –

답변

4

먼저 검색 요청을 듣고 경로를 등록합니다.

//route search 
Route::get('/search',['uses' => '[email protected]','as' => 'search']); 

2. 검색보기 : - 는 이제보기에서 검색 양식을 만들 : -

<form action="/search" method="get"> 
<input type="text" name="q" placeholder="Search.."/> 
<button type="submit">Search</button> 
</form> 

3. SearchController :

지금 SearchController이 검색을 처리하기 위해 만들 논리. SearchController :

<?php 

    class SearchController extends \BaseController { 


     public function getSearch() 
     { 
      //get keywords input for search 
      $keyword= Input::get('q'); 

      //search that student in Database 
      $students= Student::find($keyword); 

      //return display search result to user by using a view 
      return View::make('selfservice')->with('student', $students); 
     } 

    } 

지금 당신은 당신의 검색 결과를 표시하는 하나 개의보기 셀프을 만들어야합니다.

4. 셀프 전망 : 다음은 각 학생의 결과에 대한

@foreach ($students as $key=> $student) 
<div> 
<a href="{{ URL::route('student.show', ['id' => $student->id]) }}">{{$student->name}}</a> 
</div>    
@endforeach 

는 하나 개의 링크가 생성됩니다. 링크는 다음과 같습니다. -

website.domain/{student} 

5.

1 - 학생에 대한 업데이트 경로는

Route::get('/{student}',['uses' => '[email protected]','as' => 'student.show']); 

UPDATE 다음 단계를 수행 검색 website.domain\{user}로 리디렉션하려면 직접


학생 페이지를 얻을 수있는 답을 갱신 수정 SearchController

<?php 

class SearchController extends \BaseController { 


    public function getSearch() 
    { 
     //get keywords input for search 
     $keyword= Input::get('q'); 

     //search that student in Database 
     $student= Student::find($keyword); 

     //redirect directly to student.show route with student detail 
     return Redirect::route('student.show', array('student' => $student)); 
    } 

} 

2 지금 Route::get('/{student}',['uses' => '[email protected]','as' => 'student.show']);

HomeController에서 HomeController에서 경로 student.show하는 기능을 추가

public function student($student) 
{ 
    //here display student detail 
} 
+0

감사합니다. 확실히 도움이됩니다. 이 시점에서 나는 사용자를 검색 할 수 있고 그들은 표시되지만, URL은'homepage.com/search'입니다. getSearch 컨트롤러에서 쿼리를 가져온 후'homepage.com/username'으로 리디렉션하는 방법은 무엇입니까? – Moose

+0

검색 결과가 표시 될 때 시간 URL은'website.domain/search? q = keyword'가됩니다. 그러나이 search_result_view에서는 모든 사용자를 표시하며 해당 사용자의 URL은'website.domain/{user} '이됩니다 –

+0

먼저'Homepage => search => search_result => user_page' 흐름을 이해하십시오. 하나의 중간보기 ** search_result ** 검색 및 사용자보기 사이에있을 것입니다. sear_result보기에서 사용할 수있는 링크를 클릭하면 페이지가'website.domain/{user} '로 리디렉션됩니다. –