web-dev-qa-db-fra.com

Passer une variable du contrôleur à la vue - Laravel

J'essaie de passer une variable d'une vue à un contrôleur à une autre vue. Je ne reçois aucune erreur, mais quand il arrive à la dernière vue, il ne montre pas la variable comme il est supposé. Dans la première vue, je ne fais que nommer. 

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

Voici mon 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>

Alors pourquoi ne se présente-t-il pas?

6
porcupine92

Tout d’abord, vous devriez changer votre fonction postView en:

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

Et votre itinéraire:

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

dans:

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

Maintenant, vous devriez changer votre fonction view2 en:

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

Maintenant, dans votre view2.blade.php, vous devriez pouvoir utiliser:

<p> Hello, {{ $name }} </p>
12
Marcin Nabiałek

Vous devez nommer la variable:

public function view2($name)
{
    return View::make('view2')->with('name', $name);
}
2
Laurence
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
Sumesh Ps

Voici quelles autres réponses manquent directement de Laravel docs :

Comme la méthode with fait clignoter les données dans la session, vous pouvez les récupérer à l'aide de la méthode typique Session :: get.

Donc, au lieu de {{$name}}, écrivez {{Session::get('name')}}.

0
cha-cha

Si vous utilisez la méthode POST, pourquoi attribuer une variable à un itinéraire sera directement appliqué à votre fonction avec les données de publication.

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

itinéraire: -

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

fonction du contrôleur: -

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

et obtenir des données sur view2: -

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

Pour plus suivez ICI

0
Rakesh Sharma