2014-09-24 79 views
0

我不能管理查詢後重新填充選擇欄輸入,使用Laravel 4:重新填充Laravel輸入::舊()的Form ::選擇

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


// BlogController 
public function getPosts() 
{ 
    $posts = Post::where('category_id', Input::get('category'))->paginate(25); 

    $categories = Category::lists('title', 'id'); 

    return View::make('blog', compact('categories', 'posts')); 
} 

// Blog view  
{{ Form::open('method' => 'get', 'id' => 'form-search') }} 

    {{ Form::select('category', $categories, Input::old('category')) }} 

{{ Form::close() }} 

我設法讓這種方式工作,但它不是最好的做法

<select name="category" id="category"> 
    <option value="1" {{ (Input::get('category') == 1) ? 'selected="selected"' : null }}>Category 1</option> 
    <option value="2" {{ (Input::get('category') == 2) ? 'selected="selected"' : null }}>Category 2</option> 
    <option value="3" {{ (Input::get('category') == 3) ? 'selected="selected"' : null }}>Category 3</option> 
</select> 

我覺得Input::old('category')不起作用,因爲它是一個GET請求,對嗎?有沒有解決辦法?

更新:我終於做到了工作中使用Input::get()代替Input::old()

{{ Form::select('category', $categories, Input::get('category')) }} 
+0

第二屆參數'輸入::舊的()'是舊是空的情況下的默認值。 'Input :: old('category',null);'例如。 – Ohgodwhy 2014-09-24 20:39:09

+0

我想是這樣,但我100%確定我的輸入不爲空,因爲我的帖子上市工作得很好,而我的uri看起來像'/?category = 1' – PhilMarc 2014-09-24 20:45:36

回答

1

也許這將工作

public function getPosts() 
{ 
    $category_id = Input::get('category'); 

    $posts = Post::where('category_id', $category_id)->paginate(25); 

    $categories = Category::lists('title', 'id'); 

    return View::make('blog', compact('categories', 'posts', 'category_id')); 
} 

// Blog view  
{{ Form::open('method' => 'get', 'id' => 'form-search') }} 

    {{ Form::select('category', $categories, $category_id) }} 

{{ Form::close() }} 
+0

運行良好,然後我試着簡單地使用' Input :: get()'而不是'Input :: old()',它也起作用了!謝謝 – PhilMarc 2014-09-24 21:10:53

1

看來你甚至還沒有取回舊的輸入,你需要將它傳遞給視圖。您可以通過以下兩種方式之一來做到這一點,最簡單且最好理解的是隻指定要傳遞輸入。

return View::make('blog', compact('categories', 'posts'))->withInput(); 

此外,您不需要HTML中的標記。如果你只是給它舊的輸入值,Laravel會爲你做這件事。它工作得很好。

相關問題