Я пытаюсь передать переменную из одного представления в контроллер в другое представление. Я не получаю никаких ошибок, но когда он доходит до последнего просмотра, он не показывает переменную, как это должно быть. На первый взгляд, я просто получаю имя.
{{ 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>
Так почему же он не появляется?
Сначала вы должны изменить свой 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>
Вам нужно назвать переменную:
public function view2($name)
{
return View::make('view2')->with('name', $name);
}
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);;
}
}
Вот то, что другие ответы отсутствуют, прямо из Laravel docs:
Так как с Метод мигает данные в сеансе, вы можете получить данные, используя типичный Session :: прибудет метод.
Так что вместо {{$name}}
записывать {{Session::get('name')}}
,
Попробовать форму можно будет, если вы используете метод 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>
Для более следуйте ВОТ