控制器路由在部署时未在Laravel中正常工作

时间:2014-02-15 09:26:22

标签: php laravel

我正在开发一个应用程序,我刚刚开始将它推送到我的临时服务器,在实时环境中测试它并遇到了一个奇怪的问题。

所以我设置了这样的路线:

// 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'个例子。

遇到类似问题并解决问题的人?我真的不知道为什么会这样,以及从哪里开始寻找。

2 个答案:

答案 0 :(得分:1)

您的控制器操作必须正确映射到您的路径路径。 该错误消息告诉您 - 没有方法连接到您的路径。默认情况下,Laravel使用资源丰富的路由,并且您的路径将映射到以下命名的操作列表:

  • 使用http GET方法的索引
  • 使用http GET方法创建
  • 使用http POST方法存储
  • 使用http GET方法显示
  • 使用http GET方法进行编辑
  • 使用http PUT方法更新
  • 使用http DESTROY方法删除

您可以创建自定义方法,但您必须明确这些并告诉路由找到这些操作的位置,如下所示:

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的愚蠢)。

相关问题