Heim  >  Fragen und Antworten  >  Hauptteil

Diese Route unterstützt die POST-Methode nicht. Unterstützte Methoden: GET, HEAD. laravelle 9

Zuallererst bin ich Anfänger und weiß, dass diese Frage schon mehrmals gestellt und beantwortet wurde. Da ich die Lösungen bereits ausprobiert bzw. die Vorschläge umgesetzt habe, bin ich hier für kompetente Hilfe!

Was ich versucht habe: - @csrf zur Blade-Datei in meinem Formularelement hinzugefügt. - Überprüfen Sie, ob die Einträge „Posts“ und „Get in My Routes“ in Kleinbuchstaben geschrieben sind. -Ändern Sie die Veröffentlichung und so weiter.

Das oben Genannte hilft nicht, das Problem zu lösen, leider bin ich immer noch am Kopf.

Eigentlich versuche ich, ein Bild hochzuladen, dem Bild einen Titel hinzuzufügen und es einzusenden. Es sollte zu einer anderen Seite weitergeleitet werden, auf der die Daten im Dropdown-Menü in der oberen linken Ecke angezeigt werden, aber ich sehe das Bild in der Kopfzeile.

Bearbeiten: Lösung: Ich habe den folgenden Befehl ausgeführt und den Fehler behoben:

php Handwerkerroute: klar

Ich habe unten ein Bild des Fehlers und meiner Ordnerstruktur eingefügt:

Falsches Bild erscheint. Projektverzeichnisstruktur

Der Code lautet wie folgt:

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());
 }
}

model/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>
@Teil beenden

Vielen Dank im Voraus für Ihre Hilfe!

P粉976737101P粉976737101229 Tage vor375

Antworte allen(1)Ich werde antworten

  • 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');

    Antwort
    0
  • StornierenAntwort