Maison > Questions et réponses > le corps du texte
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粉4959559862024-03-28 11:46:35
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');