Laravel返回视图不起作用,而是显示错误页面



我试图返回一个现有的视图,但"404未找到";出现。我是个初学者,我还不太了解拉拉威尔。你知道为什么错误404显示而不是显示页面吗?我已经试过";使用视图";但仍然没有任何效果。PostsController.hp:

namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsPost;
use CviebrockEloquentSluggableServicesSlugService;
class PostsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
return view('blog.index')
->with('posts', Post::orderBy('updated_at', 'DESC')->get());
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('blog.create');
}
/**
* Display the specified resource.
*
* @param  string  $slug
* @return IlluminateHttpResponse
*/
//NOT WORKING THIS
public function show($slug)
{
return view('blog.show')->with('post', Post::where('slug', $slug)->first());
}
...

show.blade.hp:

@extends('layouts.app')
@section('content')
<div class="w-full m-auto text-center">
<div class="py-15 border-b border-gray-200 w-full">
<h1 class="text-4xl uppercase">
{{ $post->title }}
</h1>
</div>
</div>
<div class="px-5">
<span class="text-gray-500">
By <span class="font-bold italic text-gray-800">{{$post->user->name}}</span>
, Uploaded on {{date('jS M Y', strtotime($post->updated_at))}}
</span>
<p class="text-xl text-gray-700 pt-8 pb-10 leading-8 font-light">
{{ $post->description }}
</p>
</div>
@endsection

这些是我的路线。web.php

<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersPagesController;
use AppHttpControllersPostsController;
/*
|--------------------------------------------------------------------------
| 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('/', [PagesController::class, 'index']);
Route::resource('/mods', PostsController::class);
Auth::routes();
Route::get('/home', [AppHttpControllersHomeController::class, 'index'])->name('home');

没有足够的信息,但您可以自己执行以下调试步骤。

  1. 弄清楚是路由问题还是视图问题更有可能是你的路线而不是视图因为如果Laravel找不到您的视图文件,您将看到一个InvalidArgumentException错误。在返回之前添加调试代码。例如,您可以在返回语句之前添加一个dd()。如果您的请求到达正确的路由,您将看到调试dd而不是404
  2. 如果您没有看到dd()。问题不在于你的观点,而在于你的路线。您可以尝试清除路由缓存php artisan route:clear这将清除路由文件缓存
  3. 当你这样写路由文件时
Route::resource('/mods', PostsController::class)

您使用的是Laravel附带的默认RESTful资源控制器模式。所以,在幕后,你的表演路线实际上有点像

Route::get('/mods/{mods}', 'PostsController@show');

确保您的请求符合正确的路线。为此,您可以运行php artisan route:list来验证正确的路由,并与请求初始值设定项进行比较,无论它是链接还是ajax。

相关内容

最新更新