шаблон хранилища в laravel не работает - PullRequest
0 голосов
/ 14 ноября 2018
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, он переходит к тестированию контроллера.я хотел бы, чтобы он автоматически передавал мой параметр маршрута в функцию App: bind и автоматически создавал класс languageRepository со значением конструктора, передаваемого в качестве моего параметра маршрута.что происходит, код на самом деле говорит мне, что $ parameters [0] имеет неопределенное смещение.это почему?Я пробовал App :: make, но как мне передать параметр из маршрута в App :: make?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете сделать это, используя экземпляр запроса контейнера, для параметров запроса:

App::bind('App\Http\Repositories\languageRepository',function($app)
{
    $request = $app['request'];

    $parameters = $request->all();

    return new App\Http\Repositories\languageRepository($parameters[0]);
});

Это можно сделать с помощью экземпляра запроса контейнера для параметра маршрута:

App::bind('App\Http\Repositories\languageRepository',function($app)
{
    $request = $app['request'];

    $segment = $request->segment(1);

    return new App\Http\Repositories\languageRepository($segment);
});
...