如何在Laravel 5中使用RESTful控制器

时间:2015-02-26 17:43:36

标签: php html forms laravel

我正在使用Laravel 5处理表单,跟进来自Openclassropms的关于Laravel 4的教程,这真的让我很难过。

无论如何,我试图在routes.php文件中更改这些行:

Route::get('users' , 'UsersController@getInfos');
Route::post('users', 'UsersController@postInfos');

这一行:

Route::controller('users', 'UsersController');

但这样做会破坏我的表单,我仍然可以看到输入文本区域,但提交它会给我以下错误:

  

RouteCollection.php第145行中的NotFoundHttpException

以下是我的控制器和模板:

<?php namespace App\Http\Controllers;
use Illuminate\Support\Facades\Input;
class UsersController extends Controller {

    public function getInfos()
    {
        return \View::make('infos');
    }

    public function postInfos()
    {
        echo 'The name is ' . Input::get('nom');
    }

}

@extends('tempform')

@section('content')
    {!! Form::open(array('url'=>'users')) !!}
        {!! Form::label('nom', 'Enter your name:') !!}
        {!! Form::text('nom') !!}
        {!! Form::submit('Submit') !!}
    {!! Form::close() !!}
@stop

此外,根据教程中最初的说明,我使用了不同的网址:gappsl / users&gt;&gt; gappsl /用户/信息

3 个答案:

答案 0 :(得分:2)

您必须在控制器中创建一个名为getIndex()postIndex()的新方法,具体取决于您将使用的HTTP谓词。这样/users路由就能正常工作。

答案 1 :(得分:0)

如果您使用Route::controller()方法,那么它总是在寻找以HTTP Verb开头的函数。

在您的情况下,如果您想通过表单指出postInfos()。然后,您需要将表单定义更改为:

{!! Form::open(array('url'=>'users/infos', 'method'=>'POST')) !!}

如果您对使用哪些路由有任何疑惑,只需转到应用程序根目录中的命令行并键入php artisan route:list即可。

在那里,您可以找到哪些URI指向具有完整控制器路径的方法。

答案 2 :(得分:-1)

您需要将行格式更改为:

  {!! Form::open(array('url'=>'users/post-infos')) !!}

解决您的postInfos()功能