我正在开发一个应用程序,我刚刚开始将它推送到我的临时服务器,在实时环境中测试它并遇到了一个奇怪的问题。
所以我设置了这样的路线:
// AJAX routes
Route::controller('io', 'IoController');
在IoController中我设置了方法:
public function getSomeData() {}
public function postSomeData() {}
当我在我的开发环境(localhost)上运行php artisan routes
时:
GET /io/some-data
POST /io/some-data
GET /io/{_missing}
但在我的临时服务器上,我得到:
GET /io/{_missing}
当然,检查路由app.com/io/some-data
只会抛出'Controller method not found'
个例子。
遇到类似问题并解决问题的人?我真的不知道为什么会这样,以及从哪里开始寻找。
答案 0 :(得分:1)
您的控制器操作必须正确映射到您的路径路径。 该错误消息告诉您 - 没有方法连接到您的路径。默认情况下,Laravel使用资源丰富的路由,并且您的路径将映射到以下命名的操作列表:
您可以创建自定义方法,但您必须明确这些并告诉路由找到这些操作的位置,如下所示:
Route::get("path","SomeController@SomeMethodName");
在大多数情况下,我建议使用优秀的Jeffrey Ways generators package
使用一个命令,为您生成整个资源;包括迁移,模型,控制器,动作......
您可以像这样使用该资源:
Route::resource("path","SomeController");
答案 1 :(得分:0)
升级Laravel时似乎是一个问题。
在4.1命名组之前,不必在URL中包含组名,但在更新之后,命名资源组希望组名在URL中。
不知怎的,我设法在staging和dev-environments上有一个版本的差异(我在composer.json中使用dev-branch的愚蠢)。