【问题标题】:MethodNotAllowedHttpException in RouteCollection.php LaravelRouteCollection.php Laravel 中的 MethodNotAllowedHttpException
【发布时间】:2016-10-20 09:08:09
【问题描述】:

我无法将来自 user1 的姓名和电子邮件保存在我创建的表 user1s 中。

当我在 Laravel 中使用带有route::post 和函数存储的 html 表单在 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),也许这就是问题所在 p>

<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>

为用户 1 迁移

<?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'); 
    }

}

【问题讨论】:

  • acction="/user1" ?
  • 我不确定我应该采取什么行动,我坚持认为这意味着我会在方法存储完成后访问页面'/user1',但我很困惑。跨度>
  • 我改变了action=" " .
  • &lt;form method="POST" acction=""&gt; 什么是acction,你是说action
  • 我纠正了错字。谢谢!

标签: php html forms laravel routes


【解决方案1】:

事情解决了,这工作。我将添加我添加的代码,以便其他人可以找到它!

首先:我不知道为什么,但是 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');
			
	    }

【讨论】:

    【解决方案2】:

    我纠正了错字。谢谢!

    我也改变了这个 Route::post('/','User1Controller@store'); 和行动=“”。

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

    因为当我重新加载主页时,它会使数据库变得一团糟。 我会试试看它是否有效。

    感谢大家的帮助! :)

    【讨论】:

      【解决方案3】:

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

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

      现在表单动作可以了,

      action="/register"
      

      【讨论】:

      • 什么是acction
      • 更正了错字(采取行动)。我的意思是 HTML 表单标签的动作属性。
      • 我纠正了错字。谢谢!我也改变了这个 Route::post('/','User1Controller@store');
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2016-08-30
      • 2016-06-15
      相关资源
      最近更新 更多