【问题标题】:new controller mistake Laravel新控制器错误 Laravel
【发布时间】:2017-01-04 14:57:23
【问题描述】:


我在学习 Laravel 5 时进行了测试,创建了一个新的控制器,但是当它应该可以正常工作时,我确实遇到了一个奇怪的错误。这里是:

我在app/Http/Controllers/目录下新建了一个文件夹Pages,并在其中添加了控制器ContactController
app/Http/Controllers/ContactController.php

<?php

namespace App\Http\Controllers\Pages;

use App\Http\Controllers\Controller;

class ContactController extends Controller {

    public function getIndex() {
        return 'This is the Contact page.';
    }
}

然后我在 routes/web 文件中创建了一个路由:
routes/web.php

Route::controller('contact', 'Pages\ContactController');


奇怪的是,当我访问 /contact URL -> http://laravel.devpeaks.com/public/contact 时,我得到:
已编译的.php 行 6271 中的 BadMethodCallException: 方法控制器不存在。

【问题讨论】:

    标签: php laravel controller


    【解决方案1】:
    1. 您应该调整您的 nginx/apache 配置,使根目录指向 /public。
    2. Route::controller 自 Laravel-5.2 起已弃用。您应该使用 Route::resource 并将方法从 getIndex 重命名为 index。如果您使用 Laravel-5.1,请仅实现第一点。

    【讨论】:

    • 只是好奇,为什么这个答案比我的好?我的意思是它是在 11 分钟后发布的,并且完全重复了我写的内容......
    【解决方案2】:

    Route::controller() was deprecated in 5.2 and was removed in 5.3。试试这条路线:

    Route::resource('contact', 'Pages\ContactController');
    

    然后运行php artisan route:list 命令确保所有路由都存在。

    此外,您应该通过将其指向 public 目录而不是 Laravel 项目根目录来修复 Web 服务器设置。完成此操作后,使用普通 URL,如 domain.com/contact

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2015-09-26
      • 2013-05-25
      • 1970-01-01
      • 2015-04-21
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      相关资源
      最近更新 更多