2013-12-17 50 views
1

我試圖在Laravel中創建一個搜索表單,以便當用戶按下搜索按鈕時,所有匹配搜索條件的聯繫人都顯示在同一頁面上。發佈到laravel中的相同表單

下面是我的形式:

{{ Form::open(array('url' => '/directory', 'class' => 'form-horizontal')) }} 
    <div class="form-group"> 
     <label for="lastname" class="col-sm-2 control-label">Last Name</label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" id="lastname" placeholder="Enter Last Name"> 
     </div> 
    </div> 
    <div class="form-group "> 
     <label for="phone" class="col-sm-2 control-label">Phone</label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" id="phone" placeholder="Enter Phone number"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="inputEmail1" class="col-sm-2 control-label">Email</label> 
     <div class="col-sm-6"> 
      <input type="email" class="form-control" id="inputEmail1" placeholder="Enter Email - leave blank if you are not sure"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-lg-offset-2 col-lg-10"> 
      <button type="submit" class="btn-u btn-u-green">Search</button> 
     </div> 
    </div> 
    <div class="well"> 
     @foreach($users as $user) 
      <li>{{$user->firstname}} {{$user->lastname}}</li> 

     @endforeach 
    </div> 
{{ Form::close() }} 

下面的截圖給我的表格的示圖:

search page

我的路線定義如下:

Route::get('/directory', '[email protected]'); 

現在,無論何時按下搜索按鈕,我都會收到MethodNotFound exception

我真正想要做的是在搜索按鈕下方顯示搜索結果。

編輯..

一切現在工作正常,除了一兩件事。

我在我的視圖中顯示數據(獲取我的頁面上符合搜索條件的所有用戶的列表),但for循環沒有執行。

<li>Count of users = {{ $users->count() }}</li> 
<li>{{$users->first()->lastname}}</li> 
@foreach ($users as $user) 
    <p>This is user {{ $user->id }}</p> 
@endforeach 

所以說:雖然我可以看到數和記錄的結果數組中的第一個用戶的姓氏,是沒有得到執行foreach循環。

我在做什麼錯?

回答

2

Laravel路由綁定到形式的方法,所以你還需要創建一個POST路線:

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

您還需要將姓名添加到您的表單字段:

name="lastname" 

<input type="text" name="lastname" class="form-control" id="lastname" placeholder="Enter Last Name"> 

對於所有其他人。

控制器的方法來處理這個查詢看起來是這樣的:

<?php 

class UsersController extends Controller { 

    public function filter() 
    { 
     $users = User::query(); 

     if (Input::has('lastname')) 
     { 
      $users->where('lastname', Input::get('lastname')) 
     } 

     if (Input::has('phone')) 
     { 
      $users->where('phone', Input::get('phone')) 
     } 

     return View::make('your.view') 
       ->with('userCount', $users->count()); 
       ->with('users', $users->get()); 
    } 

} 

而且在你看來你可以:

<li>Count of users = {{$userCount}}</li> 

@foreach ($users as $user) 
    <li> 
     {{ $user->id }} - {{$user->lastname}} 
    </li> 
@endforeach 
+0

感謝@Antonio ..我沒有得到例外,但現在沒有得到填充記錄...你能幫幫我的.. – Gagan

+0

爲了幫助您進行數據插入,您必須向我們顯示您的控制器。 –

+0

嗨安東尼奧,我想我錯了。我可以顯示數據,但我真的不知道爲什麼foreach循環沒有得到執行。請查看最新更新的原始帖子。 – Gagan

0

你要告訴Laravel要使用get方法用於向服務器提交表單。否則,默認情況下,Laravel將使用post方法。

嘗試以下操作:

{{ Form::open(array('url' => '/directory', 'method' => 'get', 'class' => 'form-horizontal')) }} 

                 ^^^ 
相關問題