Laravel: передача данных из базы данных/контроллера в RouteServiceProvider.php
мой вопрос заключается в том, можно ли передать данные в RouteServiceProvider.php файл из базы данных с контроллером или без него. Если да, то не могли бы вы сказать мне, верен ли мой приведенный ниже код?
То, что я пытаюсь передать в свой RouteServiceProvider, - это расположение темы, чтобы сделать поддержку темы более чистой и простой в обслуживании.
Код, который я пытаюсь реализовать:
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
foreach ($theme_settings as $key=>$setting){
Route::middleware('web')
->group(base_path($setting->location . $setting->name . 'route.php'));
}
Route::middleware('web')
->group(base_path(env('THEME_DIR') . env('THEME_NAME') . '/route.php'));
});
}
Мои утверждения use
в верхней части файла RouteServiceProvider.php
:
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
use App\Models\ThemeSettings;
use App\HTTP\Controllers\ThemeSettingsController;
Моя Модель ThemeSettings
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ThemeSettings extends Model
{
use HasFactory;
protected $fillable = ['name', 'description','author','location'];
}
Мой Контроллер ThemeSettings (ThemeSettingsController.php)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\ThemeSettings;
class ThemeSettingsController extends Controller
{
public $theme_settings;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$theme_settings = ThemeSettings::get();
return view('admin.settings.theme', compact('theme_settings'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Как я уже сказал выше, я не знаю, возможно ли это, но если это так, то что-то у меня не работает так, как должно, и мне определенно нужна помощь.
Если бы вы могли предоставить мне какую-либо информацию, я был бы вам очень признателен!
Ответы - Laravel: передача данных из базы данных/контроллера в RouteServiceProvider.php / Laravel: Pass data from Database/Controller into RouteServiceProvider.php

27.10.2020 10:27:09
вы не определяете переменную theme_settings в функции загрузки сделайте это так:
public function boot()
{
$theme_settings = ThemeSettings::get();
$this->configureRateLimiting();
$this->routes(function ()use($theme_settings) {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
foreach ($theme_settings as $key=>$setting){
Route::middleware('web')
->group(base_path($setting->location . $setting->name . 'route.php'));
}
Route::middleware('web')
->group(base_path(env('THEME_DIR') . env('THEME_NAME') . '/route.php'));
});
}