App::bind('App\Http\Repositories\languageRepository',
function( $app, array $parameters)
{
return new App\Http\Repositories\languageRepository($parameters[0]);
} );
Route::get('/test/{id}', 'testController@getme');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Repositories\languageRepository;
class test extends Controller
{
//
protected $language;
public function __construct(languageRepository $rep){
$this->language = $rep;
}
public function getme(){
$this->language->getMe();
}
}
例如,当用户访问路由/ test / 5时,它将转到测试控制器。我想做的是它应该自动将我的route参数传递给App:bind函数,并自动创建languageRepository类,并将构造函数值作为我的路由参数传递。发生的是代码实际上告诉我$ parameters [0]是未定义的偏移量。这是为什么?我已经尝试过App :: make,但是如何将参数从路由传递到App :: make?
答案 0 :(得分:1)
您可以使用容器的请求实例来完成此操作,以获取查询参数:
App::bind('App\Http\Repositories\languageRepository',function($app)
{
$request = $app['request'];
$parameters = $request->all();
return new App\Http\Repositories\languageRepository($parameters[0]);
});
您可以使用容器的request实例为route参数完成此操作:
App::bind('App\Http\Repositories\languageRepository',function($app)
{
$request = $app['request'];
$segment = $request->segment(1);
return new App\Http\Repositories\languageRepository($segment);
});