【问题标题】:How to use RESTful controller within Laravel 5如何在 Laravel 5 中使用 RESTful 控制器
【发布时间】:2015-04-29 05:30:25
【问题描述】:

我正在使用 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 >> gappsl/users/info

【问题讨论】:

  • Laravel 5 与 Laravel 4 确实有很大不同。*,我建议不要遵循 Laravel 4 教程,除非你打算使用框架的第 4 版。
  • 你知道有哪些适合初学者的 Laravel 5 教程吗?此外,您认为我应该继续使用 Laravel 5 还是切换到 4.2 版本?
  • 有一些 Laravel 5 从零开始的教程,但它是 2015 年 2 月才正式发布的。谷歌应该可以找到它们。我会学习 5,此时将时间花在 4 上似乎没什么意义。

标签: php html forms laravel


【解决方案1】:

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

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

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

或者

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

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

【讨论】:

    【解决方案2】:

    您需要将打开的行格式更改为:

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

    解决您的postInfos() 功能

    【讨论】:

    • 我也要试试这个,它可能也会派上用场,谢谢 Edwin。
    • 实际上它不像@EdwinKrause所说的那样工作。如果你想调用例如 postInfos 路由,你必须使用 /users/infos 带有 POST 方法的路径。类似地,如果你想调用 patchHelloWorld,你应该使用/users/hello-world 和 PATCH 方法。希望它有所帮助。
    • 我自己也在想这个,你说得对 Maksym 它实际上与 /users/infos 一起使用,而不是像 Edwin 指出的那样与用户/post-infos 一起使用,但他指出了我正确的方向,现在我有点明白了。谢谢你的帮助!!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 2016-05-21
      • 1970-01-01
      • 2016-09-14
      • 2014-01-24
      • 2013-10-12
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多