Laravel 4:NotFoundHttpException
我对拉威尔来说真的是个新手,我正试着从总体上建立一个表格 因此,我有一个页面(admin/index),它只有一个表单,其中包含映射到的路径AdminController@test. 表单提交很好,但随后我得到一个NotFoundHttpException:( index.blade.php中表单生成器的代码为:Laravel 4:NotFoundHttpException,exception,laravel,laravel-4,laravel-routing,Exception,Laravel,Laravel 4,Laravel Routing,我对拉威尔来说真的是个新手,我正试着从总体上建立一个表格 因此,我有一个页面(admin/index),它只有一个表单,其中包含映射到的路径AdminController@test. 表单提交很好,但随后我得到一个NotFoundHttpException:( index.blade.php中表单生成器的代码为: @extends('layouts.master') @section('title') Admin @stop @section('content') {{ Form::open
@extends('layouts.master')
@section('title')
Admin
@stop
@section('content')
{{ Form::open(array('route' => 'test', 'method' => 'get')) }} <!-- Works with AdminController@index -->
{{ Form::text('info') }}
{{ Form::close() }}
@stop
而有关控制人是:
Route::get('/admin/test/' , array( 'as' => 'test' ,
'uses' => 'AdminController@test'));
class AdminController extends BaseController{
public function index(){
return View::make('admin.index');
}
public function test(){
error_log('Yay!');
}
}
正如我所说,admin/index上的简单表单提交,但它不会提交给控制器,只是提交给NotFoundHttpException
编辑:
表单的HTML如下所示:
<form method="GET" action="http://localhost/showknowledge/admin/test/"
accept-charset="UTF-8">
<input name="info" type="text">
</form>
将路由逻辑移动到
AdminController
中并使用以下命令可能会更清晰:
在routes.php
中添加此选项,并删除/admin/index
和/admin/test
的两个路由定义:
Route::controller('admin' , 'AdminController');
这会将所有到admin/
的请求定向到您的AdminController。现在您需要重命名您的函数,以包括HTTP动词(GET、POST或any)和路由的下一个组件:
public function getIndex() // for GET requests to admin/index
{
//blha blah blah
}
public function getTest() // for GET requests to admin/test
{
//blha blah blah
}
最后,通过操作
关键字直接更新表单以使用该路线:
{{ Form::open(array('action' => 'AdminController@getTest', 'method' => 'get')) }}
注意,使用missingMethod()
捕获未处理的请求也非常有用,有关详细信息,请参阅Laravel文档:
希望有帮助您是否尝试过将表单直接指向控制器上的操作?
{{form::open(array('action'=>)AdminController@test“,'method'=>'get'))}
是的,刚刚试过,同样的问题:(哦,等等,表单提交后,在请求过程中会发生什么?它会将Yay
写入日志,对吗?表单的HTML在页面上是什么样子的?你能包括上面的内容吗?啊,好的,你能像这样声明你的路由吗?route::get('admin/test/'),array('as'=>'test','uses'=>'AdminController@test'));