首頁  >  問答  >  主體

此路由不支援 POST 方法。支援的方法:GET、HEAD。拉拉維爾 9

首先,我是初學者,我知道這個問題已經被問過幾次並得到了答案。我已經嘗試過解決方案,或者我已經實施了建議,所以我來這裡尋求專家的幫助!

我嘗試過的: -將@csrf加入我的表單元素內的刀片檔案。 -檢查我的路線中的帖子和獲取是否為小寫。 -更改獲取到發布等等第四個。

以上內容並沒有幫助解決問題,唉,我仍然摸不著頭腦。

實際上,我正在嘗試上傳圖像,為圖像添加標題並提交。它應該轉到另一個頁面,在左上角的下拉列表中顯示數據,但我看到標題中的圖像。

編輯:解決方案:我運行了以下命令並刪除了錯誤:

php 工匠路線:清除

我在下麵包含了錯誤和我的資料夾結構的圖像:

出現錯誤的圖像。 專案目錄結構

程式碼如下:

Web.php

#
<?php

use Illuminate\Support\Facades\Route;


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

Auth::routes();

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@index')- 
>name('profile.show');

PostsController.php

<?php

namespace App\Http\Controllers;

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

class PostsController extends Controller
{

public function constructor()
{
    $this->middleware['auth'];
}


public function create()
{
    return view('posts.create');
}


public function store() {
    $data = request()->validate([
    'caption' => 'required',
    'image' => 'required|image',
    ]);

    dd(request('image')->store('uploads','public'));

    auth()->user()->posts()->create($data);

    dd(request()->all());
 }
}

模型/Posts.php

<?php

namespace App\Models;

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

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

views/posts/create.blade.php

#
@extends('layouts.app')

@section('content')

<div class="container">
    <form action="/p" enctype="multipart/form-data" method="post">
     @csrf
    <div class="row">

        <div class="col-8 offset-2">
            <div class="row mb-3">
                <div class="row pt-5">
                    <h1>Add New Post</h1>
                </div>

                <label for="caption" class="col-md-4 col-form-label">Post Caption</label>


                <input id="caption"
                       type="text"
                       class="form-control @error('caption') is-invalid @enderror"
                       name="caption"
                       value="{{ old('caption') }}"
                       autocomplete="caption" autofocus>

                @error('caption')
                        <strong>{{ $message }}</strong>
                @enderror


        </div>
        <div class="row">
            <label for="image" class="col-md-4 col-form-label">Post Image</label>
            <input type="file" class="form-control-file" id="image" name="image">

            @error('image')
            <strong>{{ $message }}</strong>
            @enderror


            <div class="pt-3">
                <button class="btn btn-primary btn-sm">Add New Post</button>
            </div>





            </div>
        </div>
    </div>


</form>
@結束部分

預先感謝您的幫忙!

P粉976737101P粉976737101179 天前322

全部回覆(1)我來回復

  • P粉495955986

    P粉4959559862024-03-28 11:46:35

    這是否是由於您的路線被定義為“/p/”,而您的表單操作只是“/p”(沒有尾部斜線)導致的?我會先嘗試確保它們完全匹配。將您的路線更改為:

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

    您也可以嘗試擴大該路線定義。

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

    會變成

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

    回覆
    0
  • 取消回覆