详细信息页面内容基于网址

时间:2018-01-09 05:30:29

标签: php arrays laravel object

我使用以下代码列出了事件:

@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');

1 个答案:

答案 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中的保留关键字,因此您应该使用命名空间来避免冲突,或者重命名模型。