将变量从控制器传递到视图 - Laravel

por*_*e92 7 php variables views controllers laravel

我正在尝试将变量从一个视图传递到控制器到另一个视图.我没有得到任何错误,但是当它到达最后一个视图时,它不会显示它应该的变量.在第一个视图中,我只是得到一个名字.

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

这是我的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);
}
Run Code Online (Sandbox Code Playgroud)

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'));
Run Code Online (Sandbox Code Playgroud)

view2.blade.php

{{ $name = Input::get('name') }}
<p> Hello, {{ $name }} </p>
Run Code Online (Sandbox Code Playgroud)

那为什么不出现呢?

Mar*_*łek 13

首先,你应该将你的postView功能改为:

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

你的路线:

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

成:

Route::post('form', array('as' => 'form', 'uses'=>'HomeController@postView1'));
Run Code Online (Sandbox Code Playgroud)

现在,您应该将您的view2功能更改为:

public function view2($name)
{
    return View::make('view2')->with('name',$name);
}
Run Code Online (Sandbox Code Playgroud)

现在在view2.blade.php你的应该可以使用:

<p> Hello, {{ $name }} </p>
Run Code Online (Sandbox Code Playgroud)