Cette route ne prend pas en charge la méthode POST. Méthodes prises en charge : GET, HEAD. laravel 9
P粉976737101
P粉976737101 2024-03-27 16:43:09
0
1
393

Tout d'abord, je suis débutant et je sais que cette question a été posée et répondue plusieurs fois. J'ai déjà essayé les solutions ou j'ai mis en œuvre les suggestions, je suis donc là pour obtenir l'aide d'un expert !

Ce que j'ai essayé : - Ajout de @csrf au fichier blade dans mon élément de formulaire. - Vérifiez si les messages et entrez dans mes itinéraires sont en minuscules. -Changer pour publier et ainsi de suite quatrième.

Ce qui précède ne résout pas le problème, hélas, je me gratte encore la tête.

En fait, j'essaie de télécharger une image, d'ajouter un titre à l'image et de la soumettre. Il devrait accéder à une autre page affichant les données dans la liste déroulante dans le coin supérieur gauche, mais je vois l'image dans l'en-tête.

Edit : Solution : j'ai exécuté la commande suivante et supprimé l'erreur :

route artisanale php : effacer

J'ai inclus une image de l'erreur et la structure de mes dossiers ci-dessous :

Une mauvaise image apparaît. Structure du répertoire du projet

Le code est le suivant :

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>
@Fin partie

Merci d'avance pour votre aide !

P粉976737101
P粉976737101

répondre à tous(1)
P粉495955986

Est-ce dû au fait que votre itinéraire est défini comme "/p/" et que votre action de formulaire est simplement "/p" (sans la barre oblique finale) ? J'essaierais d'abord de m'assurer qu'ils correspondent exactement. Modifiez votre itinéraire pour :

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

Vous pouvez également essayer d'élargir la définition de cet itinéraire.

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

deviendra

Route::any('/p/', 'App\Http\Controllers\PostsController@store');
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal