当我在routes.php中使用Route :: controller()时,Composer失败了

时间:2014-05-07 21:39:57

标签: laravel laravel-4

我正在努力将现有的Laravel 3应用程序迁移到Laravel 4.1,并且路由正在踢我的屁股。这是我遇到的问题 - 在旧的应用程序中,我们经常在routes文件中使用Route :: controller()。当我将这些条目带到新应用程序时,它们似乎有效,但它们会使作曲家变得讨厌。

例如,我有这条路线:

Route::controller('templates', 'AdminTemplatesController');

这是一条路线。但是当我运行composer update时,我收到了这个错误:

{"error":{"type":"ReflectionException","message":"Class AdminTemplatesController does not exist","file":"\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerInspector.php","line":28}}

我尝试剥离并使用Artisan创建一个全新的控制器 - 同样的测试,同样失败。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:0)

在Laravel 4中,您使用" Route :: resource()"。所以你的例子是Route :: resource(' templates',' AdminTemplatesController');

http://laravel.com/docs/controllers#resource-controllers

答案 1 :(得分:0)

看起来你必须分步进行:

1)禁用所有路线

2)执行composer update并使流程通过,您不需要路线来执行此操作

3)重新启用控制器路由并修复Laravel未找到的问题,可能是:

  • 控制器文件夹未在composer.json中加载
  • 未在composer.json中加载命名空间

在所有这些情况下,您必须确保您的控制器位于该文件夹的任何文件中:

vendor/composer

例如,如果您在composer.json的autoload->类别图中有controllers文件夹,则该文件将为:

vendor/composer/autoload_classmap.php

请记住,每次更改composer.json时,都必须

composer dumpautoload

因此它会重新创建这些文件。

编辑:

关于你的评论,当我的文件在命令行中打印时,我遇到了类似的问题,因为我曾经发生过这样的事情:

<?

而不是

<?php

这对Laravel来说是不同的。