我在学习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');
奇怪的是,当我访问/contactURL->http://laravel.devpeaks.com/public/contact,我得到:
compiled.php第6271行出现BadMethodCallException:方法控制器不存在。
- 您应该以根目录指向/public的方式调整nginx/apache配置
- 自Laravel-5.2以来,
Route::controller
已被弃用。您应该使用Route::resource
并将方法的名称从getIndex重命名为index。如果您使用Laravel-5.1,则仅实现第一点
Route::controller()
在5.2中被弃用,在5.3中被删除。试试这个路线:
Route::resource('contact', 'Pages'ContactController');
然后运行php artisan route:list
命令以确保所有路由都存在。
此外,您应该通过将其指向public
目录而不是Laravel项目根目录来修复web服务器设置。完成此操作后,请使用像domain.com/contact
这样的普通URL。