Laravel 4, → withInput(); = Undefined смещение: 0
У меня был длинный поиск и здесь, и на форумах Laravel, но я не могу найти ответ на эту проблему. ->withInput()
кашляет a Undefined offset: 0
.
Для контекста:
контроллер
public function getJobs()
{
$position_options = DB::table('jposition')->lists('friendly','id');
$category_options = DB::table('jcategory')->lists('friendly','id');
$location_options = DB::table('jlocation')->lists('friendly','id');
$result = $query->get();
return View::make('jobsearch.search', array('position_options' => $position_options, 'category_options' => $category_options, 'location_options' => $location_options))->withInput();
}
Вид
<form action="{{ action('[email protected]') }}" method="post">
<div class="row">
<div class="large-8 columns">
<input type="text" name="realm" placeholder="Keywords/Skills" />
</div>
<div class="large-4 columns">
{{ Form::select('category', $category_options , Input::old('category')) }}
</div>
</div>
<div class="row">
<div class="large-4 columns">
{{ Form::select('location', $location_options , Input::old('location')) }}
</div>
<div class="large-4 columns">
{{ Form::select('type', $position_options , Input::old('type')) }}
</div>
<div class="large-4 columns">
<input type="submit" value="Search" style="width:100%; padding-top: .5rem;
padding-bottom: .5rem;" class="button border-btn" />
</div>
</div>
</form>
Теперь в соответствии с документацией не должно быть проблем, и страница загружается штрафом, если удаляется ->withInput();
.
Конечная цель состоит в том, чтобы выполнить ответ, полученный мной из моего предыдущего вопроса Нежелательный результат из db: raw и иметь одну страницу, загружающую "Фильтрация", формы и отображает соответствующие результаты при перезагрузке и запоминает выбор в форме.
Спасибо заранее.
UPDATE:
После комментария я обновил контроллер и маршруты, все тот же результат:
routes.php
Route::get('jobs/search', '[email protected]');
&
Route::post('jobs/search', '[email protected]');
контроллер
public function getSearch()
{
$position_options = DB::table('jposition')->lists('friendly','id');
$category_options = DB::table('jcategory')->lists('friendly','id');
$location_options = DB::table('jlocation')->lists('friendly','id');
return View::make('jobsearch.search', array('position_options' => $position_options, 'category_options' => $category_options, 'location_options' => $location_options));
}
public function getJobs()
{
$position_options = DB::table('jposition')->lists('friendly','id');
$category_options = DB::table('jcategory')->lists('friendly','id');
$location_options = DB::table('jlocation')->lists('friendly','id');
return View::make('jobsearch.search', array('position_options' => $position_options, 'category_options' => $category_options, 'location_options' => $location_options))->withInput();
}
Ответы
Ответ 1
withInput()
не работает так, как вы думаете. Это только функция перенаправления, а не просмотр.
Вызов withInput($data)
on View имеет совершенно другой эффект; он передает следующую пару значений ключа вашему представлению: 'input' => $data
(вы получаете сообщение об ошибке, потому что вы не передаете какие-либо данные функции)
Чтобы получить необходимый эффект, вызовите Input::flash()
перед тем, как сделать свой вид, вместо вызова withInput()
. Это позволит вам использовать функцию Input::old()
в вашем представлении для доступа к данным.
В качестве альтернативы вы можете просто передать Input::all()
в свое представление и использовать массив input[]
в своем представлении:
View::make(...)->withInput(Input::all());
который переводится на
View::make(...)->with('input', Input::all());
Что касается вашего комментария, я рекомендую сделать это так:
$position_options = DB::table('jposition')->lists('friendly','id');
$category_options = DB::table('jcategory')->lists('friendly','id');
$location_options = DB::table('jlocation')->lists('friendly','id');
$category = Input::get('category');
$location = Input::get('location');
$type = Input:: get('type');
$data = compact('position_options', 'category_options', 'location_options', 'category', 'type', 'location');
return View::make('jobsearch.search', $data);