簡體   English   中英

Laravel 5:無法POST來路由資源

[英]Laravel 5: Can't POST to route resource

我有一個路由資源Route::resource('projects', 'ProjectsController'); 當我運行route:list我可以看到POST可用。

+--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+
| Domain | Method   | URI                      | Name             | Action                                                       | Middleware      |
+--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+
|        | GET|HEAD | projects                 | projects.index   | App\Http\Controllers\ProjectsController@index                | auth            |
|        | POST     | projects                 | projects.store   | App\Http\Controllers\ProjectsController@store                | auth            |
|        | GET|HEAD | projects/create          | projects.create  | App\Http\Controllers\ProjectsController@create               | auth            |
|        | GET|HEAD | projects/{projects}      | projects.show    | App\Http\Controllers\ProjectsController@show                 | auth            |
|        | PUT      | projects/{projects}      | projects.update  | App\Http\Controllers\ProjectsController@update               | auth            |
|        | PATCH    | projects/{projects}      |                  | App\Http\Controllers\ProjectsController@update               | auth            |
|        | DELETE   | projects/{projects}      | projects.destroy | App\Http\Controllers\ProjectsController@destroy              | auth            |
|        | GET|HEAD | projects/{projects}/edit | projects.edit    | App\Http\Controllers\ProjectsController@edit                 | auth            |
+--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+

當我在/projects/create (顯示我的表單)並點擊我的提交按鈕時,我收到一條錯誤消息:

MethodNotAllowedHttpException in RouteCollection.php line 201:
  at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'PUT', 'PATCH', 'DELETE')) in RouteCollection.php line 188

這可能是我如何定義我的<form>標簽? 我沒有使用正確的動作嗎?

<form method="post" action="">

我也試過<form method="post" action="{{ url('projects/store') }}">

對不起,我是拉夫拉的菜鳥!

你應該POST荷蘭國際集團的資源URL,而不是資源/創建。

換句話說,只需確保表單的action="/projects"action="/projects"而不是action="/projects/create"

編輯:我會把它留在這里,因為它有點相關,因為我最初發布它,但預先警告它是矯枉過正和很多不相關的代碼,對於剛開始的人。

例如,這是我的一個站點的刀片片段:

@extends('layouts.master')

@section('title', 'Create a Project')

@section('content')

    <h3>Create a Project</h3>

    <hr/>

    {!! Form::open(['action'=>'ProjectController@store']) !!}

        @include('forms/partials/edit_form', ['submit_button_label' => 'Add Project'])

    {!! Form::close() !!}


    @include('errors.list')

@endsection

Laravel實際上在所有<form>標簽中使用method="POST"

您需要的是以下內容:

<input type="hidden" name="_method" value="DELETE">

DELETE也可以替換為其他HTTP謂詞(PUT,PATCH,UPDATE等)

我看到自從上次回復以來Laravel已經更新。 無論如何,我今天遇到了同樣的問題,這是我如何解決它。

基本上我的路由現在看起來像這樣:

// Resourcing routes: https://laravel.com/docs/5.3/controllers#resource-controllers
Route::resource('admin/photos', 'Admin\AdminPhotosController');

// need to do this to enable the store method on the following route (otherwise POST is on index when resourcing controllers)
Route::any('admin/photos/create', 'Admin\AdminPhotosController@create');
Route::post('admin/photos/create', 'Admin\AdminPhotosController@store');

希望能幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM