5 votes

Php laravel 5.3 passer une valeur d'entrée d'un fichier lame à un autre fichier lame

Je veux faire passer une valeur d'entrée d'un fichier lame à un autre fichier lame.

Je suis nouveau dans l'utilisation de PHP Laravel, et j'obtiens une erreur lorsque je tente de l'utiliser.

Je pense que ma syntaxe est mauvaise ici. Quelqu'un peut-il m'aider ?

canalisation.lame :

<select class="form-control " name="fee" id ="fee"></select>

C'est le lien vers la page suivante, où je veux envoyer la valeur de "fee" :

<input type="hidden" value="fee" name="fee" />
<a href="{{ url('pay ') }}">Click to Channel</a></p>

Voici mon web.php :

Route::post('pay', [
    'as' => 'fee',
    'uses' => 'channelController@displayForm'
]);

C'est ma classe de contrôleur :

 public function displayForm()
    {
        $input = Input::get();
        $fee = $input['fee'];
        return view('pay', ['fee' => $fee]);
    }

Message d'erreur :

Undefined variable: fee 
(View: C:\xampp\htdocs\lara_test\resources\views\pay.blade.php)

payer.lame :

<h4>Your Channeling Fee Rs:"{{$fee}}"</h4>

1voto

Alexey Mezenin Points 86781

Vous devez utiliser le formulaire pour envoyer post puisque a href enverra get . Donc, supprimez le lien et utilisez le formulaire. Si vous utilisez Laravel Collective, vous pouvez le faire :

{!! Form::open(['url' => 'pay']) !!}
{!! Form::hidden('fee', 'fee') !!}
{!! Form::submit() !!}
{!! Form::close() !!}

Vous pouvez utiliser une valeur dans un contrôleur ou une vue avec request()->fee .

Ou vous pouvez faire ça :

public function displayForm(Request $request)
{
     return view('pay', ['fee' => $request->fee]);
}

0voto

Je pense que tu peux essayer ça, tu t'es trompé. url('pay ') avec un blanc :

changez votre code :

<a href="{{ url('pay ') }}">Click to Channel</a></p>

a

<a href="{{ url('pay') }}">Click to Channel</a></p>

En outre, votre question nécessite plus de correction, donc je pense que vous devez d'abord la revoir.

Vous pouvez passer en revue environ comment construire un formulaire avec laravel 5.3 . J'espère que cela vous aidera.

0voto

Jaymin Panchal Points 2098

Vous devez utiliser un formulaire pour afficher des données et ensuite soumettre le formulaire lors d'un événement de clic.

 <form id="form" action="{{ url('pay') }}" method="POST" style="display: none;">
     {{ csrf_field() }}
     <input type="hidden" value="fee" name="fee" />
  </form>

Sur l'événement de clic de <a>

<a href="{{ url('/pay') }}" onclick="event.preventDefault();
     document.getElementById('form').submit();">
      Logout
</a>

0voto

joshuamabina Points 898

tl;dr : Je pense que la réponse de @AlexeyMezenin est la meilleure aide, jusqu'à présent.

Vos problèmes actuels :

  • Si vous avez décidé d'utiliser <a href="{{ url('pay') }}">Click to Channel</a> vous devez utiliser Route::get(...) . Utilisez Route::post(...) pour les demandes soumises par les formulaires.

  • Il n'y a pas de Input instance créée. Input::get() a besoin d'une demande de formulaire pour exister. Ainsi, le $fee un Variable indéfinie message d'erreur.

  • La valeur de <input type="hidden" value="fee" name="fee"/> es sera toujours la chaîne "frais". . (A moins qu'il n'y ait un sort magique jeté par un code JavaScript).

  • En documentation laravel Je vous suggère de taper l'indice Request lors de l'accès aux requêtes HTTP, afin que la requête entrante soit automatiquement injectée dans la méthode de votre contrôleur. Vous pouvez maintenant $request->fee . Génial, non ?


La voie à suivre :

  • En BasicTaskList Le tutoriel Laravel 5.2 a donné le coup d'envoi de mon voyage dans le monde de Laravel.

0voto

sara99 Points 37

J'ai changé le code comme ceci et ça a marché

echanneling.blade

 <input type="hidden" value="fee" name="fee" />
                    <button type="submit" class="btn btn-submit">Submit</button>

channelController.php

public function about(Request $request)
    {

        $input = Input::get();
        $fee = $input['fee'];

        return view('pay')->with('fee',$fee);
    }

Web.php Route::post('/pay', 'channelController@about' ) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X