Php Laravel中的Input::get()不起作用
我在bestellen.blade.php中有一个表单: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
<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我也试过了。但这没有帮助。对不起,忘了提了。我只是想问一下,如果你这么做,你会得到什么