Rumah  >  Soal Jawab  >  teks badan

Laluan ini tidak menyokong kaedah POST. Kaedah yang disokong: GET, HEAD. laravelle 9

Pertama sekali, saya seorang pemula dan saya tahu soalan ini telah ditanya dan dijawab beberapa kali. Saya telah mencuba penyelesaian atau saya telah melaksanakan cadangan, jadi saya di sini untuk mendapatkan bantuan pakar!

Apa yang saya cuba: - Menambah @csrf pada fail blade di dalam elemen borang saya. - Semak sama ada siaran dan masuk ke laluan saya adalah huruf kecil. -Tukar dapatkan untuk menerbitkan dan seterusnya keempat.

Yang di atas tidak membantu masalah, aduhai, saya masih menggaru kepala.

Sebenarnya, saya cuba memuat naik imej, menambah tajuk pada imej dan menghantar. Ia sepatutnya pergi ke halaman lain yang menunjukkan data dalam menu lungsur di sudut kiri atas, tetapi saya melihat imej dalam pengepala.

Edit: Penyelesaian: Saya menjalankan arahan berikut dan mengalih keluar ralat:

php laluan tukang: clear

Saya telah memasukkan imej ralat dan struktur folder saya di bawah:

Imej yang salah muncul. Struktur direktori projek

Kod adalah seperti berikut:

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>
@Bahagian akhir

Terima kasih terlebih dahulu atas bantuan anda!

P粉976737101P粉976737101179 hari yang lalu318

membalas semua(1)saya akan balas

  • P粉495955986

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

    Adakah ini disebabkan oleh laluan anda ditakrifkan sebagai "/p/" dan tindakan borang anda hanyalah "/p" (tanpa garis miring di belakang)? Saya akan cuba terlebih dahulu untuk memastikan ia sepadan dengan tepat. Tukar laluan anda kepada:

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

    Anda juga boleh cuba mengembangkan definisi laluan itu.

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

    akan menjadi

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

    balas
    0
  • Batalbalas