PHP laravel 自动路由

Mar*_*ons 0 php laravel laravel-5

我正在使用 laravel 5.5,我正在尝试使用到控制器的自动路由,但它不起作用

在 web.php(此版本的路由文件)中,我有以下行

Route::resource('panel', 'panel');
Route::resource('/', 'HomeController');
Run Code Online (Sandbox Code Playgroud)

在面板中我有以下操作

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class panel extends Controller{
    public function index(){
        return \View::make('panel.index');
    }

    public function registrar(){
        return \View::make('panel.registrar');
    }

}
Run Code Online (Sandbox Code Playgroud)

但它只是调用index()视图,当用户访问 url 时,不会调用 registrar() 视图

site.com/panel/registrar
Run Code Online (Sandbox Code Playgroud)

屏幕上打印以下错误

"Method [show] does not exist on [App\Http\Controllers\panel]."
Run Code Online (Sandbox Code Playgroud)

我尝试使用 base_controller 但它也不起作用

"Class 'App\Http\Controllers\Base_Controller' not found"
Run Code Online (Sandbox Code Playgroud)

有没有办法识别这些行为?

lag*_*box 5

资源路由设置 7 个特定路由,即控制器上需要的 7 个特定方法,7。如果您不想要所有 7 个路由,则必须这样定义。

资源路由不是隐式控制器。它不会查看控制器上的方法然后进行路由。资源路由是一个“特定”的东西。Laravel 中不再有隐式控制器,因为这确实没有意义。

Laravel 5.5 文档 - 控制器 - 资源控制器

您创建的路由指向不存在的方法,这就是错误所在。

另外,第一个参数Route::resource是资源“名称”,而不是路径。从技术上讲,它不是 URI。它是资源的名称。

Route::resource('/', ...) // not a name
Run Code Online (Sandbox Code Playgroud)