首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel友好url而不是ID

Laravel友好url而不是ID
EN

Stack Overflow用户
提问于 2021-10-20 21:27:55
回答 2查看 114关注 0票数 0

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

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

路由路线::get(周末/{周末:标题},PagesController::class,‘getCurrent’);

链接到单个页面

代码语言:javascript
复制
 @foreach($title as $title) <li><a href="weekends/{{$title->title}}">{{$title->title}}</a></li> @endforeach``` controller ``` public function getCurrent(Weekend $title) { return $title; }

和模型

代码语言:javascript
复制
<?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

我把一切都做好了,但是我想让网址通过周末标题,而不是ID。不知道怎么做。在我的AppService提供程序中,我使用标题填充导航条下拉列表:

代码语言:javascript
复制
\View::composer(['layouts/frontend/partials/header'], function ($view) {
    $title = Weekend::all('title', 'id');

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

我对每一页的路线是

代码语言:javascript
复制
Route::get('weekends/{weekend}', [PagesController::class, 'getCurrent']);

链接是

代码语言:javascript
复制
@foreach ($title as $title)
    <li><a href="{{ $title->id }}">{{ $title->title }}</a></li>
@endforeach

但是,如果我将{{ $title->id }} {{ $title->title }} 改为{{ $title->title }},则会得到404.

控制器是

代码语言:javascript
复制
public function getCurrent(Weekend $weekend)
{
    return view('pages.weekend')->with(['weekend'=> $weekend]);
}
EN

回答 2

Stack Overflow用户

发布于 2021-10-20 21:33:42

你可以这样做

代码语言:javascript
复制
Route::get('weekends/{weekend:title}',[PagesController::class,'getCurrent']);
票数 0
EN

Stack Overflow用户

发布于 2021-10-20 21:39:11

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

代码语言:javascript
复制
Route::get('weekends/{weekend:title}',[PagesController::class,'getCurrent']);

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

代码语言:javascript
复制
public function getRouteKeyName() {
    return 'title';
}

您可以在拉勒维尔博士中找到关于更改密钥的更多文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69653230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档