Передача переменной из контроллера в просмотр — Laravel

Я пытаюсь передать переменную из одного представления в контроллер в другое представление. Я не получаю никаких ошибок, но когда он доходит до последнего просмотра, он не показывает переменную, как это должно быть. На первый взгляд, я просто получаю имя.

{{ Form::open(array('route' => 'form', 'method'=>'post')) }}
{{ $name = Form::text('name') }}
{{ Form::submit('Go!') }}
{{ Form::close() }}

Вот мой HomeController.php.

public function view1()
{
return View::make('stuff');
}

public function postView1($name)
{
return Redirect::route('view2')->with($name);
}

public function view2($name)
{
return View::make('view2')->with($name);
}

routes.php

Route::get('/', array('as' => 'stuff', 'uses' => 'HomeController@stuff'));
Route::post('form/{name}', array('as' => 'form', 'uses'=>'HomeController@postView1'));
Route::get('view2/{name}', array('as' => 'view2', 'uses' => 'HomeController@view2'));

view2.blade.php

{{ $name = Input::get('name') }}
<p> Hello, {{ $name }} </p>

Так почему же он не появляется?

6

Решение

Сначала вы должны изменить свой postView функция в:

public function postView1()
{
return Redirect::route('view2', ['name' => Input::get('name')]);
}

И ваш маршрут:

Route::post('form/{name}', array('as' => 'form', 'uses'=>'HomeController@postView1'));

в:

Route::post('form', array('as' => 'form', 'uses'=>'HomeController@postView1'));

Теперь вы должны изменить свой view2 функция в:

public function view2($name)
{
return View::make('view2')->with('name',$name);
}

Теперь в вашем view2.blade.php Вы должны быть в состоянии использовать:

<p> Hello, {{ $name }} </p>
12

Другие решения

Вам нужно назвать переменную:

public function view2($name)
{
return View::make('view2')->with('name', $name);
}
2

class HomeController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{

}

public function index()
{
$data = array (
'title'=>'My App yo',
'Description'=>'This is New Application',
'author'=>'foo'
);
return view('home')->with($data);;
}
}
1

Вот то, что другие ответы отсутствуют, прямо из Laravel docs:

Так как с Метод мигает данные в сеансе, вы можете получить данные, используя типичный Session :: прибудет метод.

Так что вместо {{$name}} записывать {{Session::get('name')}},

0

Попробовать форму можно будет, если вы используете метод POST, поэтому, установив переменную в маршрут, она попадет прямо в вашу функцию с данными поста.

{{ Form::open(array('url' => 'form', 'method'=>'post')) }}
{{Form::text('name') }}
{{ Form::submit('Go!') }}
{{ Form::close() }}

маршрут: —

Route::post('form','HomeController@postView1');

функция контроллера: —

public function postView1() {
$data = Input::all();
return Redirect::route('view2')->with('name', $data['name']);
}

и получить данные на view2: —

<p> Hello, {{ $name }} </p>

Для более следуйте ВОТ

0