【问题标题】:did not route page to payment blade file in laravel 5.6在 laravel 5.6 中没有将页面路由到支付刀片文件
【发布时间】:2019-03-27 06:00:35
【问题描述】:

在我的 laravel 5.6 应用程序中,我在支付视图文件中有以下指向 payment.blade.php 文件的路由链接,

<a class="btn btn-primary" href="{{route('payments.payment',$vehicles->id)}}" role="button">Go Premium</a>

这个页面的路由是,

Route::get('myads/{id}/edit/payment', function(){
    return view('payments.payment');
})->name('payments.payment');

在 payment.blade.file 我有以下表单操作,

<form method="post" action="{{route('payments.payment', ['id' => $vehicles->id])}}">
{{csrf_field()}}

它是执行路线,

Route::get('/add-order/{id?}', 'PController@addOrder')->name('payments.payment'); 

通常我需要通过上面的链接去支付刀片文件并使用刀片提交按钮提交表单。但是当我点击 go premium 按钮访问支付刀片文件时,我的应用程序不会重定向到支付按钮。它是执行支付刀片文件表单操作而不显示支付刀片文件。我该如何解决这个问题?

请查看我编辑的路线和表单操作

Route::get('myads/{id}/edit/payment', function(){
    return view('payments.payment');
})->name('payments.viewpayment');

和

Route::post('/add-order/{id?}', 'PController@addOrder')->name('payments.payment');

并形成动作

<form method="post" action="{{route('payments.viewpayment', ['id' => $vehicles->id])}}">

但现在出现此错误,

(1/1) MethodNotAllowedHttpException 

如何解决这个问题?

adOder 函数

 public function addOrder(Request $request,$id = null)
{

    DB::table('vehicles')
            ->where('id', $id)
            ->update(['adtype' => '1']);
}

当前代码

Route::get('myads/{id}/edit/payment', function($vehicle_id){
return view('payments.payment',compact('vehicle_id'));
})->name('payments.payment');

Route::post('/add-order/{id}', 'PController@addOrder')->name('payments.payment');

支付刀片链接

<a class="btn btn-primary" href="{{url('myads/'.$vehicles->id.'/edit/payment')}}" role="button">Go Premium</a>

形成动作,

<form method="post" action="{{route('payments.payment', ['id' => $vehicle_id])}}">

和控制器,

public function addOrder($id = null)
{
    DB::table('vehicles')
            ->where('id', $id)
            ->update(['adtype' => '1']);
}

【问题讨论】:

  • 因为routes name('payments.payment'); 使用相同的名称,所以使用差异名称

标签: php laravel


【解决方案1】:

尝试使用差异name routes

路线

Route::get('myads/{id}/edit/payment', function(){
    return view('payments.payment');
})->name('payments.viewpayment');
Route::post('/add-order/{id?}', 'PController@addOrder')->name('payments.payment'); 

动作

<a class="btn btn-primary" href="{{route('payments.viewpayment',$vehicles->id)}}" role="button">Go Premium</a>
<form method="post" action="{{route('payments.payment', ['id' => $vehicles->id])}}">
{{csrf_field()}}

【讨论】:

  • 两条路线的路线名称仍然相同,请更新。
  • 实际使用 &lt;form method="post" action="{{route('payments.payment', ['id' =&gt; $vehicles-&gt;id])}}"&gt; 而不是 viewpayment
  • 收到此错误未定义变量:车辆(查看:C:\Users\Nalaka\Desktop\acxian\resources\views\payments\payment.blade.php)跨度>
  • 你只是看到教程如何在 laravel 中路由你清除了所有的东西
【解决方案2】:

您可以为同一视图使用 get 和 post 方法的相同名称

在你的锚标签中

<a class="btn btn-primary" href="{{url('myads/'.$vehicles->id.'/edit/payment')}}" role="button">Go Premium</a>

在您的路线文件中

Route::get('myads/{id}/edit/payment', function($id){
return view('payments.payment',compact('id'));
})->name('payments.payment');

Route::post('/add-order/{id}', 'PController@addOrder')->name('payments.payment'); 

在你的表单标签中

<form method="post" action="{{route('payments.payment', ['id' => $id])}}">

您需要在函数中使用成功消息重定向回来

public function addOrder($id = null)
{
    DB::table('vehicles')
        ->where('id', $id)
        ->update(['adtype' => '1']);

    return redirect()->back()->with('success', 'Successfully added');
}

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 2014-08-22
    • 2020-01-10
    • 1970-01-01
    • 2018-11-20
    • 2018-12-18
    • 2018-09-15
    • 2016-09-13
    • 2014-01-05
    相关资源
    最近更新 更多