我正在学习Laravel . 我正在尝试创建一个列出汽车表中汽车的表单,如果单击,则发送到另一个基于DB查询的表单,该查询返回所选汽车的数据(由$ modelesc标识) .
此表单将数据发送到“订单”表 . 使用我现在的代码,我无法在订单表上发布订单 . 它收到消息:“RouteCollection.php第233行中的MethodNotAllowedHttpException:”
这是代码
Web.php
Route::get('catalog', 'carController@catalog');
Route::get('orders/', 'CarController@orders')->name('orders');
CarController
function catalog() {
$cars = DB::table('cars')->get();
return view('catalog', compact('cars'));
}
function orders(Request $request) {
$modelesc = $request->modelesc;
$cars = DB::table('cars')->where('Model', $modelesc)->get();
$colours = DB::table('colours')->get()->pluck('Colour');
return view('orders', compact('cars', 'colours'));
}
Catalog.blade.php
@foreach($cars as $car)
{!! Form::open(array('action' => 'CarController@orders', 'method' => 'GET')) !!}
{!! Form::hidden('$modelesc', $car->Model) !!}
{!! Form::submit($car->Model) !!}
{!! Form::close() !!}
@endforeach
Orders.blade.php
@foreach($cars as $car)
{!! Form::open(['method' => 'POST']) !!}
<a href="{{route('orders', $car->Model) }}">{{ $car->Model }}</a>
{!! Form::hidden('users_id', Auth::user()->id) !!}
{!! Form::hidden('Fabrication_date', date('Y-m-d')) !!}
{!! Form::select('Colour_id', $colours) !!}
{!! Form::hidden('Order_status_id', '1') !!}
{!! Form::submit('Ok') !!}
{!! Form::close() !!}
@endforeach
表订单具有以下结构:
$table->increments('id');
$table->integer('users_id')->unsigned();
$table->foreign('users_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('Model');
$table->date('Fabrication_date');
$table->integer('Colour_id')->unsigned();
$table->foreign('Colour_id')->references('id')->on('colours')->onDelete('cascade')->onUpdate('cascade');
$table->integer('Order_status_id')->unsigned();
$table->foreign('Order_status_id')->references('id')->on('order_status')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
2 回答
更新您的订单功能
Catalog.blade.php
您的隐藏输入的
value
将由request->modelesc
读取,您最终会得到一个类似于此http://mysite.dev/orders?modelesc=toyota
的URL .Some advice
您使用表单只提交隐藏的输入 . 没有用户输入 . 在我看来,使用简单的锚点更容易
<a></a>
.结果相同 .
使用漂亮的网址让它变得更好 . 更改路线定义
和锚
用命名路线
而且功能
改变您的路线:
在此之后将您的控制器更改为:
现在更改Catalog.blade.php
在您的情况下,您不需要在您的订单页面中输入表单