【问题标题】:The @edit Route is not working... showing 404 not found@edit Route 不起作用...显示 404 not found
【发布时间】:2021-06-28 12:44:23
【问题描述】:

@edit 路由没有创建。一切正常,但显示 404 未找到 问题出在最后一条路线上。我运行了 php artisan route:list 代码,但没有显示任何名为 /profile/{user}/edit 的路由 web.php 代码 ->>>>>

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProfilesController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();



Route::get('/p/{post}','App\Http\Controllers\PostsController@show');

Route::get('/p/create','App\Http\Controllers\PostsController@create');

Route::post('/p','App\Http\Controllers\PostsController@store');

Route::get('/profile/{user}', [App\Http\Controllers\ProfilesController::class, 'index'])->name('profile.show');

Route::get('/profile/{user}/edit','ProfilesController@edit')->name('profile.edit');

配置文件控制器代码 ->>>>

<?php

namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;

class ProfilesController extends Controller
{

    public function edit(User $user)

    {
            return view('profiles.edit', compact('user'));
    }

    public function index(User $user)

    {
        return view('profiles.index', compact('user'));
    }

    
}

index.blade.php 代码--->>>>>>>>>>>>>>>>

@extends('layouts.app')

@section('content')
<div class="container">
    <div><h1>here is a big design</h1></div>
    <br>
    <div class="d-flex justify-content-between align-items-baseline">
        <h1>{{ $user->username}}</h1>
        <a href="/p/create">Add New Post</a>
    </div>
    
    <a href="/profile/{{ $user->id }}/edit">Edit Profile</a>
    
    <div class="pr-5"><strong>{{$user->posts->count()}}</strong> posts</div>
    <div class="pr-5"><strong></strong> followers</div>
    <div class="pr-5"><strong></strong> following</div>
    <br>
    <div><h1>{{ $user->profile->title}}</h1></div>
    <br>
    <div><h1>{{ $user->profile->description}}</h1></div>
    <br>
    <div><h1>{{ $user->profile->url ?? 'N/A'}}</h1></div>
    <h1>Posts</h1>
    <hr>
    <div class="row pt-5">
        @foreach($user->posts as $post)
            <div class="col-4 pb-4">
                <a href="/p/{{$post->id}}">
                    <img src="/storage/{{$post->image}}" class="w-100">
                </a>
            </div>

        @endforeach
    </div>

</div>
@endsection

【问题讨论】:

  • 你使用的是什么版本的 Laravel,因为从 L8 开始定义路由的方式发生了变化。
  • 欢迎来到 SO ...您是否缓存了您的路线?
  • 我使用的是 laravel 8.35.1

标签: laravel


【解决方案1】:

改变你的路线

Route::get('/profile/{user}/edit',[ProfilesController::class, 'edit'])->name('profile.edit');

您的方式'ProfilesController@edit' 没有考虑use App\Http\Controllers\ProfilesController;


题外话:既然你已经命名了你的路线,我建议你在刀片文件中使用命名的路线,而不是硬编码它们:

<a href="{{ route('profile.edit', $user) }}">Edit Profile</a>

而不是

<a href="/profile/{{ $user->id }}/edit">Edit Profile</a>

这样,如果您决定稍后更改 URL,您只需要在您的 web.php 文件中更改它一次,而不是所有硬编码的事件

【讨论】:

  • Route [profile.edit] not defined....... laravel 正在显示这个
  • 缓存路由后可以正常使用
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多