Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel中的Input::get()不起作用_Php_Laravel_Forms - Fatal编程技术网

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

Php Laravel中的Input::get()不起作用,php,laravel,forms,Php,Laravel,Forms,我在bestellen.blade.php中有一个表单: <form method="get" action="{{action("BestellController@mkOrder")}}"> {{ csrf_field() }} <fieldset class="everybody"> <!-- Lieferart bestimmen --> Bitte wählen Sie eine Lieferart a

我在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>
web.php中的路由如下所示:

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);
}
Route::get('/bestellen{lieferart?}{zahlung?}', 'BestellController@mkOrder')->name('order.save');
Route::get('/fertig{lieferart?}{zahlung?}', 'BestellController@fertig');
现在我有两个问题:

1.)我的
Input::get
都不工作。 工作原理是将变量写入url,如下所示: 看起来不错。 但是现在我想把变量放到我的控制器中,但这不起作用。 我在这里看了一眼:正如建议的那样,我试着用POST而不是GET。但那没用。 我也看了一下,但这不是我的问题:

我也尝试过使用
$\u GET[]
而不是Input::GET()。但这也不起作用。我尝试了
$request->input('lieferart')
等等。。但它仍然不起作用

我总是查看我的浏览器控制台,看看是否有任何错误消息,但没有。 当我打印变量的
输出时,没有显示任何内容

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

一般来说,我对Laravel和网络编程都是新手。所以,如果我问了一些愚蠢的问题,我很抱歉

这是我的日志:
在控制器中,使用输入的名称,通过使用已传递的$request对象来获取要查找的值,如下所示:

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

你看过这个参考页了吗

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

$input=$request->all();

您可以使用
dd()
将结果打印到屏幕上,如下所示:

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);
}
Route::get('/bestellen{lieferart?}{zahlung?}', 'BestellController@mkOrder')->name('order.save');
Route::get('/fertig{lieferart?}{zahlung?}', 'BestellController@fertig');
$input=$request->all();
dd(投入);

通过这种方式,您可以看到通过HTTP请求发送的数据


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

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

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

你看过这个参考页了吗

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

$input=$request->all();

您可以使用
dd()
将结果打印到屏幕上,如下所示:

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);
}
Route::get('/bestellen{lieferart?}{zahlung?}', 'BestellController@mkOrder')->name('order.save');
Route::get('/fertig{lieferart?}{zahlung?}', 'BestellController@fertig');
$input=$request->all();
dd(投入);

通过这种方式,您可以看到通过HTTP请求发送的数据


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

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

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

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

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

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

尝试
$request->input('lieferart')
。您可能正在使用Laravel 5-
Input::get
是旧的L4方式。@ceejayos我也试过了。但这没有帮助。很抱歉忘了提到它。只是想检查一下,如果您执行
Log::info(Input::all())?查看
storage/logs
中的日志了解详细信息。实际上,我认为它可能不会
BestellController@mkOrder
,因为您的路线中不存在变量。您将路线定义为
/bestellen{lieferart?}{zahlung?}
,但您将前往
bestellen
。您没有向操作传递任何变量。您应该分离出路由中的变量,这样它看起来更像
/bestellen/{lieferart?}/{zahlung?}
,这样可以更好地解析它;如果它是
GET
表单,则不需要将其包含在此表单上。此外,您正在设置路线参数,但实际上没有使用它们;它们之间也不是用
/
分隔的,因此您的路线应该是
Bestellenwhatever
,而应该是
bestellen/whatever/whatever
。请尝试
$request->input('lieferart')
。您可能正在使用Laravel 5-
Input::get
是旧的L4方式。@ceejayos我也试过了。但这没有帮助。对不起,忘了提了。我只是想问一下,如果你这么做,你会得到什么