Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 4:NotFoundHttpException_Exception_Laravel_Laravel 4_Laravel Routing - Fatal编程技术网

Laravel 4:NotFoundHttpException

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

我对拉威尔来说真的是个新手,我正试着从总体上建立一个表格

因此,我有一个页面(admin/index),它只有一个表单,其中包含映射到的路径AdminController@test. 表单提交很好,但随后我得到一个NotFoundHttpException:(

index.blade.php中表单生成器的代码为:

@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'));