在Laravel 5.2中,我正在尝试在执行期间更新路径路径,因为我有多站点运行,对于cron执行,我需要更新每个站点的路径路径。
我尝试使用
app('url')->forceRootUrl('https://domain/sitename')
但是使用此方法时,asset()
函数将使用错误的链接。
我尝试要求routes.php
文件重建路径,但显然不会保存更改。
有什么想法吗?
由于
routes.php:
Route::group([
'prefix' => Helpers_SiteTemplate::getSiteRoute($GLOBALS['site_segment'], $GLOBALS['is_cron']),
'middleware' => ['helpers.siteTemplate'],
], function () {
Route::get('test', 'Admin\HomeController@debugging');
});
$ GLOBALS ['site_segment']和$ GLOBALS ['is_cron']只有在控制台/ Kernel.php :: schedule()
helpers.siteTemplate将初始化提示者。
这将正常工作从url,在这种情况下:domain.tld / sitename / test,但从cron routes.php将设置没有网站名称的网址,然后我需要再次设置路由。
在设置会话变量后我尝试从schedule()require app_path('Http/routes.php');
但是路线没有改变。
答案 0 :(得分:0)
我终于成功找到了解决这个问题的方法,因此对于未来的搜索者来说,这可能会有所帮助。
如果由于多站点laravel中的cron操作或其他原因需要像我一样重建ROUTES,我最终使用此代码:
// Get the router facade from anyware
$router = \Illuminate\Support\Facades\Route::getFacadeRoot();
// Clear the current routes by setting a empty route collection
$routes = new \Illuminate\Routing\RouteCollection;
$router->setRoutes($routes);
// Get the route service provider
$routeserviceprovider = new \App\Providers\RouteServiceProvider(app());
// Call the map function from the provider, this will remap all routes from the app\Http\routes.php
app()->call([$routeserviceprovider, 'map']);
如果我可以提供进一步的信息,请与我联系。
谢谢大家。
答案 1 :(得分:0)
对于Laravel 5.7,答案已过时:
$router = app('router');
// Clear the current routes by setting a empty route collection
$routes = new \Illuminate\Routing\RouteCollection;
$router->setRoutes($routes);
// Get the route service provider
$routeserviceprovider = app()->getProvider(RouteServiceProvider::class);
// Call the map function from the provider, this will remap all routes from the app\Http\routes.php
app()->call([$routeserviceprovider, 'map']);
$routes = Route::getRoutes();
$routes->refreshNameLookups();
$routes->refreshActionLookups();
$router->setRoutes($routes);
答案 2 :(得分:0)
我将我的项目更新到 Laravel 8.33,经过数小时的测试,这对我有用:
// clear routes
$router = \Illuminate\Support\Facades\Route::getFacadeRoot();
$routes = new \Illuminate\Routing\RouteCollection;
$router->setRoutes($routes);
// load routes
Route::middleware('web')
->namespace('App\Http\Controllers')
->group(base_path('routes/web.php'));