【问题标题】:Laravel Friendly url instead of IDLaravel 友好的 url 而不是 ID
【发布时间】:2021-12-07 16:51:21
【问题描述】:

好吧,我迷路了。下面打印我们的 [] 一个空数组。这真的把我搞砸了。 AppServiceProvider 填充下拉列表

\View::composer(['layouts/frontend/partials/header'], function ($view) { $title = Weekend::all('title','id'); $view->with(['title'=>$title]); });

路线 Route::get('weekends/{weekend:title}',[PagesController::class,'getCurrent']);`

链接到单个页面

 @foreach($title as $title) <li><a href="weekends/{{$title->title}}">{{$title->title}}</a></li> @endforeach``` controller ``` public function getCurrent(Weekend $title) { return $title; }

还有模特

<?php

namespace App\Models\Webmaster;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Weekend extends Model
{
    use HasFactory;
    protected $fillable = [];


    public function weekendTeamMembers() {
        return $this->hasMany(App\Models\Webmaster\WeekendTeamMember::class);
    }

    public function getRouteKeyName() {
        return 'title';
    }


}

enter code here

我一切正常,但我想让 URL 传递周末标题而不是 ID。不知道该怎么做。在我的 AppService Provider 中,我有以下内容可以用标题填充导航栏下拉列表:

\View::composer(['layouts/frontend/partials/header'], function ($view) {
    $title = Weekend::all('title', 'id');

    $view->with(['title'=>$title]);
});

每个单独页面的路线是

Route::get('weekends/{weekend}', [PagesController::class, 'getCurrent']);

链接是

@foreach ($title as $title)
    <li><a href="{{ $title->id }}">{{ $title->title }}</a></li>
@endforeach

但如果我将 {{ $title-&gt;id }} 更改为 {{ $title-&gt;title }} 我会得到 404。

控制器是

public function getCurrent(Weekend $weekend)
{
    return view('pages.weekend')->with(['weekend'=> $weekend]);
}

【问题讨论】:

标签: laravel friendly-url


【解决方案1】:

有几种方法可以更改路由绑定键(默认设置为主键)。最简单的方法是将其添加到您的隐式路由绑定中(添加:title):

Route::get('weekends/{weekend:title}',[PagesController::class,'getCurrent']);

另一种方法是更新模型以更改默认值:

public function getRouteKeyName() {
    return 'title';
}

您可以在Laravel docs 中找到更多关于更改密钥的文档。

【讨论】:

  • 请将您遇到的任何长代码和问题添加到您的问题中,以便于阅读。
【解决方案2】:

你可以这样做

Route::get('weekends/{weekend:title}',[PagesController::class,'getCurrent']);

【讨论】:

  • 因此,如果我将路线更改为该路线并链接到每个单独的页面,如下所示,我仍然会收到 404 @foreach($title as $title) &lt;li&gt;&lt;a href="weekends/{{$title-&gt;title}}"&gt;{{$title-&gt;title}}&lt;/a&gt;&lt;/li&gt; @endforeach
  • 我认为你需要运行php artisan route:cache
猜你喜欢
  • 2019-01-06
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2019-02-11
  • 2015-01-31
  • 2015-01-31
  • 1970-01-01
  • 2016-05-10
相关资源
最近更新 更多