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

时间:2014-10-14 05:09:17

标签: php variables laravel views controllers

我试图将变量从一个视图传递到控制器到另一个视图。我没有收到任何错误,但是当它到达最后一个视图时,它并没有像它应该那样显示变量。在第一个视图中,我只是得到一个名字。

{{ 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>

那么为什么它不会出现?

5 个答案:

答案 0 :(得分:13)

首先,您应该将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>

答案 1 :(得分:2)

您需要命名变量:

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

答案 2 :(得分:1)

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

答案 3 :(得分: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>

如需更多关注HERE

答案 4 :(得分:0)

这里还有其他答案,直接来自Laravel docs

  

由于 with 方法会向会话中闪现数据,您可以使用典型的 Session :: get 方法检索数据。

而不是{{$name}}{{Session::get('name')}}