当前位置: 首页 > 知识库问答 >
问题:

我ndex.blade.php找不到osts.destroy路线

慕容博涛
2023-03-14

我试图将我的posts.delete链接到我的index.blade.php,但我一直得到Symfony\Component\Routing\Exc0019\RouteNotFoundExcema

指数刀身php

@extends('layouts.app')

@section('content')

    <div class="flex justify-center">
        <div class="w-8/12 bg-white p-6 rounded-lg">
            <form action="{{ route('posts') }}" method="post" class="mb-4">
                @csrf
                <div class="mb-4">
                    <label for="body" class="sr-only">Body</label>
                    <textarea name="body" id="body" cols="30" rows="4" class="by-gray-100 border-2
                    w-full p-4 rounded lg @error('body') border-red-500 @enderror" placeholder="Post something!"></textarea>
                    @error('body')
                        <div class="text-red-500 mt-3 text-sm">
                            {{$message}}
                        </div>
                    @enderror
                </div>
                <div>
                    <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded
                    font-medium">Post</button>
                </div>
            </form>
            @if ($posts->count())
                @foreach ($posts as $post)
                    <div class="mb-4">
                        <a href="" class="font-bold">{{ $post->user->username }}</a>
                        <span class="text-gray-600 text-sm">{{ $post->created_at->diffForHumans() }}</span>
                        <p class="mb-2">{{ $post->body }}</p>

                        <div class="flex items-center">
                            @if (!$post->likedBy(auth()->user()))
                                <form action="{{ route('posts.likes', $post) }}" method="post" class="mr-1">
                                    @csrf
                                    <button type="submit" class="text-blue-500">Like</button>
                                </form>
                            @else
                                <form action="{{ route('posts.destroy', $post) }}" method="delete" class="mr-1">
                                    @csrf
                                    @method('DELETE')
                                    <button type="submit" class="text-blue-500">Unlike</button>
                                </form>

                            @endif
                            <span>{{ $post->likes->count() }} {{ Str::plural('likes', $post->likes->count()) }}</span>
                        </div>
                    </div>

                @endforeach

                {{ $posts->links() }}

            @else
                There are no posts...
            @endif
        </div>
    </div>

@endsection

PostLikeController

<?php

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostLikeController extends Controller
{
    public function __construct()
    {
        $this->middleware(['auth']);
    }

    public function store(Post $post, Request $request)
    //While trying to add $request here it gave back an Undefined variable '$request'.
    //But after adding Request $request to it, it worked...
    {
        if ($post->likedBy($request->user())){
            return response(null, 409);
        }
        $post->likes()->create([
            'user_id' => $request->user()->id,
        ]);

        return back();
    }

    public function destroy(Post $post, Request $request)
    {
        dd($post);
    }

}

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
use App\Http\Controllers\PostLikeController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\LogoutController;
use App\Http\Controllers\Auth\RegisterController;

/*
|--------------------------------------------------------------------------
| 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');
});

// Route::get('/', function () {
//     return view('posts.index');
// });

Route::get('/', function () {
    return view('home');
})->name('home');

Route::get('/dashboard', [DashboardController::class, 'index'] )
->name('dashboard')
->middleware('auth');

Route::get('/register', [RegisterController::class, 'index'] )->name('register');
Route::post('/register', [RegisterController::class, 'store'] );

Route::get('/login', [LoginController::class, 'index'] )->name('login');
Route::post('/login', [LoginController::class, 'store'] );

Route::post('/logout', [LogoutController::class, 'store'] )->name('logout');

Route::get('/login', [LoginController::class, 'index'] )->name('login');

Route::get('/posts', [PostController::class, 'index'] )->name('posts');
Route::post('/posts', [PostController::class, 'store'] );

Route::post('/posts/{post}/likes', [PostLikeController::class, 'store'] )->name('posts.likes');
Route::delete('/posts/{post}/likes', [PostLikeController::class, 'destroy'])->name('posts.likes');

喜欢php

<?php

namespace App\Models;

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

class Like extends Model
{
    use HasFactory;

    protected $fillable = [
        'user_id'
    ];
}

我检查了我的路线:列表,我发现它在那里

---------------------------------------------------------------------------------------域名方法URI名称动作中间件---------------------------------------------------------------------------------------------------------获取头部/主页闭包|| GET | HEAD | api/user | | Closure
api | | | | | | | | auth:api | | | HEAD | dashboard | dashboard | App Http\Controllers\DashboardController@index| web | | | | | | | | | | | | | | | | | | | | | | | |获取|头部|登录124\LoginController@index| web | | | | | | | | | | | | | | | | | | | | |来宾| | | |发布\LoginController@store| web | | | | | | | | | | | | | | | | | | | | | | | | | | |\LogoutController@store|网络| | | | |获取|头部|帖子|帖子|应用程序\Http\controller\PostController@index| web | | | | | POST | | | App\Http\Controller\PostController@store| web | | | POST | posts/{POST}/喜欢| posts。喜欢| App\Http\Controllers\PostLikeController@store|网络| | | | | | | | | | | | | | | | | | | | |删除|帖子/{post}/喜欢|。喜欢| App\Http\Controllers\PostLikeController@destroy| web | | | | | | | | | | | | | | | | | | | | | | | | | | | |\RegisterController@index| web |
| | | | | | | | |来宾|
| | |发布|注册| |应用程序\Http\Controllers\Auth\RegisterController@store| web |
| | | | | | | | |来宾------------

注:我试图让它摧毁已经创建的喜欢,但它一直给Symfony\Component\Routing\Exc0019\RouteNotFoundExcema路由[posts.destroy]未定义。(视图:C:\xampp\htdocs\posty\资源\视图\帖子\index.blade.php)

共有1个答案

孟璞
2023-03-14

你的帖子像store销毁具有相同的名称,你没有注册一个路由名称posts.destroyposts.delete。将路线上的名称更新为正确的名称。

Route::delete('/posts/{post}/likes', [PostLikeController::class, 'destroy'])->name('posts.destroy');
 类似资料:
  • 考虑以下事项: 我有一个应用模板,一个HeaderTemboard,和参数化的路由集与相同的处理程序(在应用模板)。我希望在没有找到东西的时候能够服务404路线。例如, /CA/SanFrancisco应该由区域查找和处理,而 /SanFranciscoz应该是404。 下面是我如何快速测试路线的。 问题是 /SanFranciscoz总是由区域页面处理,但我希望它是404。此外,如果我向第一个路

  • 我使用的是Laravel 5.6,出现了一个错误: 哎呀,看起来出了什么问题。(1/1) 方法不允许 下面是我的视图(leads/show.blade.php): Ajax请求和响应: 路线是: 请帮我找一下错误。

  • 我正在建立一个注册页,当我提交时,我得到一个404没有找到。我正在使用react和express,我认为前端是好的。我缺少了一些后端,或者我的post请求的url错误:AXIOS.post('http://localhost:3000/auth'。如果有人能看到我的错误之处,我将不胜感激。 这是我的路由的registerPost函数。 这些是路线。

  • 我有一个更新网站的任务。本网站使用Symfony2。我试着在我的localhost上模拟网站。 当我尝试使用空方向路径(REQUEST_URI)到达索引页时,Symfony2返回的路由。我尝试运行的url是。 当我使用(例如)时,它也不起作用 怎么了? app/config/routing。yml: app/配置/routing_dev.yml: src/AppBundle/Resources/c

  • 我对这个问题做了一些研究,但仍然无法解决。我还在这里搜索了堆栈溢出的其他方法,但到目前为止还没有成功。我试过不带样例,把它移到另一个文件夹,没有效果。结构如下: 主要Java代码 controller.java代码 我跟随本教程学习更多关于JavaFX和XML的知识。

  • 可能重复: 良好的scalaz介绍 我想了解更多关于Scalaz的知识,一旦Scalaz7被宣布稳定,我可能会使用它来避免重新连接我的大脑。我的问题是Scalaz包含了很多功能。虽然它的大部分是独立于其他部分的,但我想鸟瞰一下Scalaz提供的全局功能以及它是如何组织的。据我所知,Scalaz提供了很多东西, 、和特征, 新的monads,例如(编辑:原来它只是一个应用程序) 单声道变压器(,..