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/”,而您的表单操作只是“/p”(没有尾部斜杠)导致的?我会首先尝试确保它们完全匹配。将您的路线更改为:
您还可以尝试扩大该路线定义。
会变成