Laravel中的Input :: get()不起作用

问题描述:

I have a form in my bestellen.blade.php:

<form method="get" action="{{action("BestellController@mkOrder")}}">
{{ csrf_field() }}
        <fieldset class="everybody">
        <!-- Lieferart bestimmen -->
        Bitte wählen Sie eine Lieferart aus:
        <label>Lieferart</label>
        <select name="lieferart" required>
            <option value="abholung">Abholung</option>
            <option value="lieferung">Lieferung</option>
        </select>
    </fieldset>

    @guest
    <fieldset class="everybody" disabled>
        <label for="vor">Vorname: </label>
        <input type="text" id="vor" name="vorname" required>
        <label for="nach">Nachname: </label>
        <input type="text" id="nach" name="nachname" required>
        <label for="email">E-Mail-Adresse: </label>
        <input type="text" id="email" name="email" required>
    </fieldset>
    <fieldset id="address">
        <input type="text" id="str" name="strasse" required>
        <label for="str">Straße: </label>
        <input type="text" id="nr" name="hausnummer" required>
        <label for="nr">Hausnummer: </label>
        <input type="text" id="plz" name="plz" required>
        <label for="plz">PLZ: </label>
        <input type="text" id="ort" name="ort" required>
        <label for="ort">Ort: </label>
    </fieldset>
    @endguest


    <fieldset class="everybody">
        Bitte wählen Sie eine Zahlungsart:
        <label>Zahlungsart</label>
        <select name="dropdown" required>
            <option value="bar">Bar</option>
            <option value="rechnung">Rechnung</option>
        </select>
    </fieldset>
    <input type="submit" value="bestellen">

    <input type="checkbox" id="agb" name="agb" onclick="setAGBState()">
    <label for="agb">Ich habe die AGB gelesen und stimme ihr zu.</label>
   </form>

mkOrder from BestellController looks like this:

public function mkOrder(Request $request){
    $lieferart = Input::get('lieferart');
    $zahlungsart = Input::get('zahlungsart');
    $data = array('lieferart'=>$lieferart, 'zahlung'=>$zahlungsart);
    //Kunde ist eingeloggt
    if(Auth::check()){
      //TODO after problem is fixed
    }
    //Kunde ist nicht eingeloggt
    else{

        //TODO after problem is fixed
    }

    return view('fertig', $data);
}

The routes in web.php look like this:

Route::get('/bestellen{lieferart?}{zahlung?}', 'BestellController@mkOrder')->name('order.save');
Route::get('/fertig{lieferart?}{zahlung?}', 'BestellController@fertig');

Now I have two Problems:

1.) My Input::get are both not working. What does work is that the variables are written to the url like this: http://localhost:8000/bestellen?_token=i436RkJAeYQhX4aKNjQ4XEMchRESzTKV0vsdkWha&lieferart=abholung&vorname=Firstname&nachname=Lastname&email=xxx%40web.de&dropdown=bar&agb=on That looks fine. But now I want to get the variables into my Controller and that does not work. I had a look here: Laravel 4: Input::get() is not working and as suggested I tried it with POST instead of GET. But that didn't help. I also had a look here, but that is not my kind of problem: Laravel Input:get() not working

What I tried, too, was using $_GET[] instead of Input::get(). But that did not work, too. And I tried $request->input('lieferart') etc.. But it still did not work.

I always had a look into my Browser Console to see if there are any error messages, but there were none. When I make a printoutput of the variables, there is nothing shown.

2.) When clicking on "bestellen" I'm redirected to the bestellen.blade.php. But I as you can see in the Method mkOrder I want to get fertig.blade.php. What am I doing wrong?

I'm new to Laravel and Webprogramming in general. So, sorry if I'm asking stupid questions.

Here is my log:

[2018-06-12 15:43:39] local.ERROR: Undefined variable: data (View: C:\xampp\htdocs\getraenkeesources\views\bestellen.blade.php) {"exception":"    
[object] (ErrorException(code: 0): Undefined variable: data (View: C:\\xampp\\htdocs\\getraenke\esources\\views\\bestellen.blade.php) at C:\\xampp\\htdocs\\getraenke\\storage\\framework\\views\\f00204dc2065285d3c2987197239e5e0a222a234.php:79, ErrorException(code: 0): Undefined variable: data at C:\\xampp\\htdocs\\getraenke\\storage\\framework\\views\\f00204dc2065285d3c2987197239e5e0a222a234.php:79)
[stacktrace]
#0 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\Engines\\PhpEngine.php(45): Illuminate\\View\\Engines\\CompilerEngine->handleViewException(Object(ErrorException), 1)
#1 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\Engines\\CompilerEngine.php(59): Illuminate\\View\\Engines\\PhpEngine->evaluatePath('C:\\\\xampp\\\\htdocs...', Array)
#2 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\View.php(142): Illuminate\\View\\Engines\\CompilerEngine->get('C:\\\\xampp\\\\htdocs...', Array)
#3 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\View.php(125): Illuminate\\View\\View->getContents()
#4 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\View.php(90): Illuminate\\View\\View->renderContents()
#5 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Response.php(42): Illuminate\\View\\View->render()
#6 C:\\xampp\\htdocs\\getraenke\\vendor\\symfony\\http-foundation\\Response.php(196): Illuminate\\Http\\Response->setContent(Object(Illuminate\\View\\View))
#7 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(727): Symfony\\Component\\HttpFoundation\\Response->__construct(Object(Illuminate\\View\\View))
#8 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(699): Illuminate\\Routing\\Router::toResponse(Object(Illuminate\\Http\\Request), Object(Illuminate\\View\\View))
#9 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(659): Illuminate\\Routing\\Router->prepareResponse(Object(Illuminate\\Http\\Request), Object(Illuminate\\View\\View))
#10 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#11 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#12 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#13 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#14 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken.php(67): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#15 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#16 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#17 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\View\\Middleware\\ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#18 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#19 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#20 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Session\\Middleware\\StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#21 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#24 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\EncryptCookies.php(59): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#27 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#30 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(661): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#31 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(636): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#32 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(602): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#33 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(591): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#34 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#35 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#36 C:\\xampp\\htdocs\\getraenke\\vendor\\fideloper\\proxy\\src\\TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#37 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#40 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#41 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#42 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#43 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#46 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#47 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php(46): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#49 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#52 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#53 C:\\xampp\\htdocs\\getraenke\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#54 C:\\xampp\\htdocs\\getraenke\\public\\index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#55 C:\\xampp\\htdocs\\getraenke\\server.php(21): require_once('C:\\\\xampp\\\\htdocs...')
#56 {main}
"}

Thanks to @aynber. As @aynber wrote in the comment underneath the question I never reached mkOrder. The reason was that I also had a route called Route::get('/bestellen', 'BestellController@index'); which task it was to send me to the bestellen.blade.php for the first time. Unfortunately always this route was used. I removed it and put an if-Statement in my mkOrder so I does both tasks (showing bestellen.blade.php when first entering \bestellen and sending the form stuff to \fertig else).

In your controller, use the name of the input to get the value you are looking for by using the $request object you are already passing through, like this:

$name = $request->input('name');

Have you looked at this reference page yet? https://laravel.com/docs/5.6/requests

You can also access all of your input data by doing the following:

$input = $request->all();

You can print the results to the screen using dd() like this:

$input = $request->all(); dd($input);

and this way you can see what data is coming through via your HTTP request.

Regarding your 2nd question, I think you're getting redirected to the wrong page because your controller is erroring out due to the $data variable not getting defined. If you define the $data variable by getting the right input into the controller, then that variable won't throw the error anymore and your selected view will get returned.

On top of your controller, make sure to import this Request

use Illuminate\Http\Request;

Your controller would become

    public function mkOrder(Request $request){
        $data = $request->only(['lieferart', 'zahlungsart']);
        //Kunde ist eingeloggt
        if(Auth::check()){
           //TODO after problem is fixed
         }
         //Kunde ist nicht eingeloggt
          else{

           //TODO after problem is fixed
         }

        return view('fertig', compact('data'));
}