我在routes.php中调用我的控制器:
Route::get('request', 'Controller@request');
在我的控制器中是方法请求:
class Controller extends BaseController {
public function request()
{
$number1 = int rand ( 10, 20 );
$number2 = int rand ( 0, 10 );
return View::make('request', array($number1, $number2));
}
}
问题是,我得到了错误:
exception 'Illuminate\Container\BindingResolutionException' with message 'Target [Controller] is not instantiable.'
我正在浏览互联网以寻找解决方案。很多simmilar错误与接口有关,我找不到任何有用的东西。我将控制器重命名一次,导致了一些错误,但我用“composer dump-autoload”命令修复了它。
答案 0 :(得分:2)
检查别名部分中的config/app.php
:
'Controller' => 'Illuminate\Routing\Controller',
控制器类已经存在。如果你想要它,你必须命名它。
e.g。
<?php namespace foo;
class controller extends \BaseController {
public function bar(){}
}
路线中的:
Route::get('bar',['as'=>'foo.bar', 'uses' => '\foo\controller@bar']);
答案 1 :(得分:2)
我遇到了同样的问题:
Target [App\Http\Controllers\Frontend\Booking\BookingController] is not instantiable.
问题是我已将我的构造函数声明为私有。
参考代码:
namespace App\Http\Controllers\Frontend\Booking;
use App\Http\Controllers\Controller;
class BookingController extends Controller
{
private function __construct() {
...
}
...
}
删除构造函数或将其公开解决了我的错误。没有尝试过让它像私有一样工作,因为我不熟悉整个单实例类(单例)范例,或者如果Laravel支持它(将不得不阅读它)。
在其他地方没有发现这种特殊情况,所以希望它有所帮助。
答案 2 :(得分:1)
从以下位置更改控制器类:
class Controller extends BaseController {
要:
class ControllerController extends BaseController {
为什么这样?因为Laravel中存在Controller
类(BaseController
从Controller
扩展),所以您可能希望将其命名为其他内容。
另外,请确保该文件在ControllerController.php
目录中保存为controllers
。
此外,您的路线应如下所示:
Route::get('request', 'ControllerController@request');
我已经在我的本地开发机器上快速测试了它并且它可以工作。
答案 3 :(得分:0)
我为我所做的工作是:
在 app / Http / Controllers 下使用这些类
Controlles.php
<?php namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
abstract class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
YourController.php
<?php namespace App\Http\Controllers;
class YourController extends Controller
{
public function request() {
$number1 = int rand ( 10, 20 );
$number2 = int rand ( 0, 10 );
return View::make('request', array($number1, $number2));
}
}
routes.php中的调用:
Route::get('request', 'YourController@request');