web.php
Route::resource('event', EventController::class);
WorksOK
当我替换这条线时
Route::get('/event', [EventController::class, 'index'])->name('event.index');
Route::get('/event/{id}', [EventController::class, 'show'])->name('event.show');
表示不再工作并发送此错误:
在null
上读取属性“描述”由于对象未传递给显示方法。我用DD($ event)看到了这一点; $ event是应该传递给Show方法的对象。
我需要详细介绍每条路由,而不是简单地使用route ::资源,因为索引和显示应该是公开的,其余的应该得到认证。任何暗示?谢谢你
路由::资源应像两个路线相同的方式工作:: get lines工作好像我写了
Route::get('event/{event}', [EventController::class, 'show'])->name('event.show');
它有效,但我不明白为什么。 (我放置事件而不是ID)
我做的与此视频相同https://www.youtube.com/watch?v =eunwzjuvkca
但是当我这样做时,它不起作用 我的路线现在看起来像这样:
//guest
Route::get('event', [EventController::class, 'index'])->name('event.index');
Route::get('event/{event}', [EventController::class, 'show'])->name('event.show');
// authenticated
Route::middleware(['auth'])->group(function () {
Route::get('/event/create', [EventController::class, 'create'])->name('event.create');
Route::post('/event', [EventController::class, 'store'])->name('event.store');
Route::get('/event/{event}/edit', [EventController::class, 'edit'])->name('event.edit');
Route::put('/event/{event}', [EventController::class, 'update'])->name('event.update');
Route::delete('/event/{event}', [EventController::class, 'destroy'])->name('event.destroy');
});
但Localhost:8000/evert/create返回404。多么奇怪。有提示吗?
i发现,秩序对于宣布拉拉维尔路线很重要,有些人可以贪婪。
第一个示例不起作用,因为第一行优先于第二行
Route::get('/event/{event}', [EventController::class, 'show'])->name('event.show');
Route::get('/event/create', [EventController::class, 'create'])->name('event.create');
正确编写路线的正确方法低于
Route::get('/event/create', [EventController::class, 'create'])->name('event.create');
Route::get('/event/{event}', [EventController::class, 'show'])->name('event.show');