Laravel 5.8: два раунда передачи данных между контроллером и блейдом - PullRequest
0 голосов
/ 02 июля 2019

Я получаю неопределенную переменную при передаче данных от контроллера к блейду во второй раз.

В Laravel 5.8 у меня есть два действия / метода в MyController.Я должен передать данные с контроллера для просмотра.Первое действие работает нормально (MyController @ action1 -> Blade1), но второе не выполняется (MyController @ action2 -> Blade2).

MyController:

public function action1()
{
  ...
  $varialbe1 = ... // everything set correctly here and got it in blade1
  return view('blade1', compact('variable1'));
}

public function action2(Request $request)
{
  ...
  $association = $request->input('association');
  return view('blade2', compact('association'));
}

Blade 1

<form method="POST" action="{{ route('route2') }}">
@csrf

<div class="form-group row">
  <label for="association" class="col-md-4 col-form-label text-md-right">{{ __('Association') }}</label>

  <div class="col-md-6">
  <select required="required" id="association" class="form-control" name="association">
     <option></option>
     @foreach ($variable1 as $key => $val)
       <option value="{{ $key }}">{{ $val->id }}</option> 
    @endforeach
  </select>
 </div>
 </div>
    <div class="form-group row mb-0">
       <div class="col-md-8 offset-md-4">
          <button type="submit" class="btn btn-primary">
 {{ __('Submit') }}
         </button>
   </div>
 </div>
 </form>

Маршрут

Route::post('/route2', 'MyController@action2')->name('route2');

Blade 2 (неопределенная переменная: ассоциация)

{{ $association }}

Я пробовал разные способы получения данных в MyController и разные способы передачи данных в Blade2 (способ, который также хорошо работает с action1), в том числе:

$association = Input::get('association'); 

return redirect()->to('/route2')->with('association', $association); // where route2 load the view

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Получено разрешение с другого форума. Следует добавить метод действия в список методов исключений в промежуточном программном обеспечении следующим образом:

$this->middleware('guest')->except(['logout', 'action']);

Поскольку контроллер имеет нижеприведенное промежуточное ПО в конструкторе:

$this->middleware('guest')->except('logout');

Если пользователь уже вошел в систему, в таком случае он будет перенаправлен в / home, и метод контроллера никогда не будет достигнут.

0 голосов
/ 05 июля 2019

Мой файл маршрута выглядит хорошо (MyController в предыдущем посте = LoginController).Вот мой маршрут / web.php:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home'); 

Route::post('/route2', 'Auth\LoginController@action2')->name('route2'); 
...