Подтвердить что ты не робот

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();

        }
4b9b3361

Ответ 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);