我使用以下代码列出了事件:
@foreach($entries as $entry)
<a href="{{ url('events/eventdetails', [$entry->id]) }}"> {{$entry->title}} </a><br>
@endforeach
在详细信息页面上,ID显示在URL中 http://127.0.0.1:8000/events/eventdetails/1
但是,此页面上的内容目前不是特定于该ID ...我想要实现的目标。
我可以使用$entry->id
在详细信息页面上显示ID,但我不知道如何交叉检查带有事件ID的页面ID,只显示与该ID相关的内容。< / p>
当我<?php print_r($entries);?>
时,我会得到类似这样的内容(减少代码示例,完整显示所有条目)...
Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Event Object ( [connection:protected] => sqlite [table:protected] => [primaryKey:protected] => id [keyType:protected] => int [incrementing] => 1 [with:protected] => Array ( ) [withCount:protected] => Array ( ) [perPage:protected] => 15 [exists] => 1 [wasRecentlyCreated] => [attributes:protected] => Array ( [id] => 1 [title] => Spring Festival
控制器:
class EventsController extends Controller
{
public function displayEvent()
{
$entries = Event::get();
return view('eventdisplay', ['entries' => $entries]);
}
public function displayEventDetails()
{
$entries = Event::get();
// $entries->id = $id;
return view('eventdetails', ['entries' => $entries]);
}
路线:
Route::get('events/eventdetails/{id}', 'EventsController@displayEventDetails')->name('displayEventDetails');
答案 0 :(得分:1)
您处理详细信息视图的功能缺少URL参数作为传递给函数的变量:
public function displayEventDetails(){...}
// should be
public function displayEventDetails($eventId){...}
这样您就可以将Event
模型过滤为单个ID:
$entries = Event::where("id", "=", $eventId)->first();
// or
$entries = Event::find($eventId);
// or
$entries = Event::findOrFail($eventId);
// etc, etc
您的网址看起来是正确的,因为{id}
指定参数作为变量可供控制器使用。
另外我认为Event
是Laravel中的保留关键字,因此您应该使用命名空间来避免冲突,或者重命名模型。