Получить переменную префикса маршрута в абстрактном базовом контроллере - PullRequest
0 голосов
/ 01 апреля 2020

Итак, мы создаем CMS для школьного проекта, и нам нужно сделать его динамичным c таким образом, чтобы было несколько организаций. В префикс группы я добавляю переменную $gid, которая представляет идентификатор этой организации.

Route::middleware('auth')->prefix('{$gid}/admin')->group(function()

Поэтому я также создал абстрактный базовый контроллер, который будет наследоваться каждым контроллером в разделе администратора.

abstract class BaseAdminController extends Controller

Теперь мне нужна переменная $gid из маршрута и ее синтаксический анализ в базовом контроллере в конструкторе.

protected $gid;

public function __construct() {
    $this->gid = .....;
}

Теперь я могу получить доступ к этому идентификатору везде вместо этого необходимости разбирать его для каждого отдельного контроллера и функции.

1 Ответ

0 голосов
/ 01 апреля 2020

Вам не нужно «разбирать» его в каждом действии, но вы должны сохранять его, потому что в противном случае вы не сможете получить доступ к другим параметрам маршрутов, поскольку отсутствует первый и Laravel не будет в состоянии назначить следующий правильно. И вам не нужен знак доллара в начале параметра.

// routes/web.php
                                 // ↓ No dollar sign here
Route::middleware('auth')->prefix('{group}/admin')->group(function() {
    // Routes
});

// In any of your Controllers
use Illuminate\Http\Request:

class SomeController extends BaseController
{
    public function index(Request $request, Group $group) // you might add more parameters here
    {
        // Access your $group model
    }
}

Если вам не нужна групповая модель, не определяйте тип параметра, и связанные данные не будут быть загруженным:

public function index(Request $request, $group) // Now $group is just a number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...