繁体   English   中英

RouteCollection.php Laravel中的MethodNotAllowedHttpException

[英]MethodNotAllowedHttpException in RouteCollection.php Laravel

我在将user1的名称和电子邮件保存到我创建的表user1s中时遇到问题。

当我在Laravel中使用html形式的route::post和function存储在textareas中输入它们时,它不起作用。 当我输入文字并点击“注册”按钮时,将输出以下错误:

RouteCollection.php行中的MethodNotAllowedHttpException

您将看到我使用HTML表单,并且尝试将<input ....>添加到我的表单中。


这是我的文件:

route.php

<?php

Route::get('/','PageController@home');
Route::post('/','User1Controller@store');

Route::get('about','PageController@about');

welcome.blade.php

我不确定该action 将user1 inf放入表后,应将其重定向到“谢谢”页面 (我有Thankyou.blade.php ),也许就是问题所在

<form  method="POST" action=""> 
                    <input name="_token" type="hidden" value="{{ csrf_token() }}"/>

                <ul class="list-group" >


                    <li  >
                    NAme
                    <div class="form-group" title="email" >
                        <textarea name="name" class="form-control" >

                        </textarea>
                    </div>
                    </li  >

                    <li>Email
                    <div class="form-group" > 
                        <textarea name="email"  class="form-control" >

                        </textarea>
                    </div>
                    </li>

                    <li  >
                        <div class="form-group" >
                        <button class="btn btn-primary">Register</button>
                        </div>
                    </li>

                </ul>
            </form>

为user1迁移

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateNotesTable extends Migration
{

    public function up()
    {
        Schema::create('notes', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('card_id')->unsigned();
            $table->text('body');            
            $table->timestamps();
        });
    }


    public function down()
    {
        Schema::drop('notes');
    }
}

user1controller.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User1;

class User1Controller extends Controller
{

    public function store(Request $request)
        {

            $user= new User1;
            $user->name = $request->name;
            $user->email =  $request->email;
            $user->save();

            return view('thankyou');

        }

}

pagecontroller.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

use App\User1;

class PageController extends Controller
{
    public function home()
    {
            $user1s= User1::all();
    return view('welcome',compact('user1s'));
    }

    public function about()
    {
            return view('pages.about'); 
    }

}

您的表格基本上是注册表格。 我建议为终点使用更有意义的名称。 发布路线可以是这样的,

Route::post('/register','User1Controller@store');

现在可以执行表单操作了

action="/register"

我纠正了错字。谢谢!

我也更改了此Route :: post('/','User1Controller @ store'); 和action =“”。

它有效,唯一不好的是我应该重定向到页面“谢谢”,而不要转到完全相同页面上的另一个视图。

因为当我重新加载主页时,它会使数据库混乱。 我会尝试一下,然后告诉它是否有效。

谢谢大家的帮助! :)

事情解决了,行得通。 我将添加已添加的代码,以便其他人可以找到它!

所有人:我还没弄清楚为什么,但是对我来说action =“ dir1 / dir3”无效!

这是添加的东西!

 routes.php Route::get('thankyou','PageController@thankyou'); ***PageController.php*** public function thankyou() { return view('thankyou'); } *****User1Controller.php***** public function store(Request $request) { $user= new User1; $user->name = $request->name; $user->email = $request->email; $user->save(); return redirect('/thankyou'); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM