【问题标题】:Input::get() in Laravel does not workLaravel 中的 Input::get() 不起作用
【发布时间】:2018-11-22 05:56:10
【问题描述】:

我的 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>

来自 BestellController 的 mkOrder 如下所示:

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

web.php 中的路由如下所示:

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

现在我有两个问题:

1.) 我的Input::get 都没有工作。 起作用的是将变量写入 url,如下所示: http://localhost:8000/bestellen?_token=i436RkJAeYQhX4aKNjQ4XEMchRESzTKV0vsdkWha&lieferart=abholung&vorname=Firstname&nachname=Lastname&email=xxx%40web.de&dropdown=bar&agb=on 看起来不错。 但是现在我想将变量放入我的控制器中,但这不起作用。 我在这里看了看:Laravel 4: Input::get() is not working 并按照建议我尝试使用 POST 而不是 GET。但这没有帮助。 我也看过这里,但这不是我的问题:Laravel Input:get() not working

我也尝试过使用 $_GET[] 而不是 Input::get()。但这也不起作用。我尝试了$request-&gt;input('lieferart') 等。但它仍然没有用。

我总是查看我的浏览器控制台以查看是否有任何错误消息,但没有。 当我对变量进行printoutput 时,没有显示任何内容。

2.) 当点击“bestellen”时,我被重定向到 bestellen.blade.php。但正如您在方法mkOrder 中看到的那样,我想获得fertig.blade.php。我做错了什么?

总的来说,我是 Laravel 和 Web 编程的新手。所以,对不起,如果我问愚蠢的问题。

这是我的日志:

[2018-06-12 15:43:39] local.ERROR: Undefined variable: data (View: C:\xampp\htdocs\getraenke\resources\views\bestellen.blade.php) {"exception":"    
[object] (ErrorException(code: 0): Undefined variable: data (View: C:\\xampp\\htdocs\\getraenke\\resources\\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}
"}

【问题讨论】:

  • 试试$request-&gt;input('lieferart')。您可能正在使用 Laravel 5 - Input::get 是旧的 L4 方式。
  • @ceejayos 我也试过了。但这并没有帮助。很抱歉忘记提及。
  • 只是检查一下,如果您执行Log::info(Input::all());,您会得到什么?详情请查看storage/logs 中的日志。
  • 实际上,我认为它可能根本不会去BestellController@mkOrder,因为您的路线中不存在变量。您将路线定义为/bestellen{lieferart?}{zahlung?},但您将前往bestellen。您没有将任何变量传递给操作。您应该将路由中的变量分开,使其看起来更像/bestellen/{lieferart?}/{zahlung?},以便更好地解析。
  • 旁注:{{ csrf_field() }} (_token) 通常只用于POST 请求;如果它是GET 表单,则不需要将其放在此表单上。此外,您正在设置 Route 参数,但并未实际使用它们;它们也没有被/分隔,所以你的路线应该是bestellenwhateverwhatever,而它应该是bestellen/whatever/whatever

标签: php laravel forms


【解决方案1】:

在您的控制器顶部,确保导入此请求

use Illuminate\Http\Request;

你的控制器会变成

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

【讨论】:

    【解决方案2】:

    在您的控制器中,使用输入的名称通过使用您已经通过的 $request 对象获取您正在查找的值,如下所示:

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

    你看过这个参考页面了吗? https://laravel.com/docs/5.6/requests

    您还可以通过执行以下操作来访问所有输入数据:

    $input = $request->all();

    您可以像这样使用dd() 将结果打印到屏幕上:

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

    这样您就可以看到通过您的 HTTP 请求传递的数据。

    关于您的第二个问题,我认为您被重定向到错误的页面,因为您的控制器由于 $data 变量未定义而出错。如果您通过将正确的输入输入到控制器中来定义 $data 变量,那么该变量将不再抛出错误,并且您选择的视图将被返回。

    【讨论】:

      【解决方案3】:

      感谢@aynber。 正如@aynber 在问题下方的评论中所写,我从未联系过mkOrder。原因是我还有一条名为Route::get('/bestellen', 'BestellController@index'); 的路线,它的任务是第一次将我送到 bestellen.blade.php。不幸的是,总是使用这条路线。我删除了它并在我的mkOrder 中添加了一个 if 语句,这样我就完成了这两项任务(在第一次输入 \bestellen 并将表单内容发送到 \fertig 时显示 bestellen.blade.php 其他)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        相关资源
        最近更新 更多