【问题标题】:laravel route calling wrong controllerlaravel 路由调用错误的控制器
【发布时间】:2018-06-10 02:30:03
【问题描述】:

我遇到了路由引用错误控制器的问题。

路线:

//Event Routes
Route::get('/event/register/thankyou', function(){return view('pages.events.thanks');})->name('event-thanks');
Route::get('/event/waitlist/confirmation', function(){return view('pages.events.waitlist-confirmation');})->name('event-waitlist-confirmation');
Route::get('/event/register/{eventId}/{price}', 'EventController@registerPage')->name('event-register-page')->middleware('auth');
Route::post('/event/register/{eventId}', 'EventController@register')->name('event-register')->middleware('auth');
Route::post('/event/waitlist/{eventId}', 'EventController@joinWaitlist')->name('event-join-waitlist')->middleware('auth');
Route::get('/event/{eventId}/{eventName?}', 'PageControllers@event')->where('eventId', '[0-9]+')->name('event');
Route::get('/regionalevents', 'EventController@regionalEvents')->name('events-regional');

在刀片模板上,我有这个按钮:

<a class="btn btn-theme-colored " href="/event/waitlist/{{ $event->id }}">Join Now!</a>

无论出于何种原因,即使在 /event/{eventId} 路由中使用了“where”定义器 - 当我单击按钮时,我仍然会收到此错误:

MethodNotAllowedHttpException

如果我取出“where”定义器 - 我会收到此错误:

ErrorException
Trying to get property of non-object at PageControllers->event('waitlist', '1002')

本质上,它调用的是 PageControllers 上的事件函数,而不是 EventController 上的 joinWaitlist 函数。

我已经尝试重新排序路线,但它也不起作用。

在 PageControllers 事件函数上,我放了一个 'dd($eventId);'当这是 URL 时:http://localhost:8000/event/waitlist/1002 - 它返回“waitlist”

有什么我直接想念的吗?我完全被困在这一点上。任何帮助深表感谢!

【问题讨论】:

  • Route::post('/event/waitlist/{eventId}', 'EventController@joinWaitlist')-&gt;name('event-join-waitlist')-&gt;middleware('auth'); 是一个帖子请求.. 将其更改为获取

标签: php laravel controller routes


【解决方案1】:

您正在尝试路由/event/waitlist/{eventId},这是锚标记中的POST 方法,它发送GET 方法。另外,不要在刀片中调用静态 url,而是使用如下名称:

Route::get('/event/waitlist/{eventId}', 'EventController@joinWaitlist')->name('event-join-waitlist')->middleware('auth');

在刀片中

<a class="btn btn-theme-colored " href="{{ route('event-join-waitlist', [$event->id]) }}">Join Now!</a>

【讨论】:

    【解决方案2】:

    您需要将其更改为 get 以使其工作:

    Route::get('/event/waitlist/{eventId}'
    

    代替:

    Route::post('/event/waitlist/{eventId}'
    

    因为您在使用 a href 链接时发送了一个 GET 请求。

    【讨论】:

      猜你喜欢
      • 2015-09-26
      • 2016-07-23
      • 1970-01-01
      • 2017-02-10
      • 2020-11-18
      • 2017-12-16
      • 2016-06-15
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多