En Laravel 5.2, estoy tratando de actualizar la ruta de la ruta durante la ejecución porque tengo varios sitios en ejecución y para las ejecuciones cron necesito actualizar las rutas de cada sitio.

Trato de usar

app('url')->forceRootUrl('https://domain/sitename')

Pero con este método la función asset() usará el enlace incorrecto.

Intento requerir el archivo routes.php para reconstruir las rutas, pero aparentemente los cambios no se guardan.

¿Alguna idea?

Gracias

Rutas.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'] y $ GLOBALS ['is_cron'] se establecerán solo si se trata de una ejecución cron en Console / Kernel.php :: schedule ()

  • helpers.site Template simplemente inicializará el proveedor.

  • Helpers_SiteTemplate :: getSiteRoute solo obtendrá el nombre del sitio de la URL o del parámetro var

Esto funcionará normalmente desde la url, en este caso: domain.tld / sitename / test, sin embargo, desde un cron, las rutas.php se establecerán las URL sin el nombre del sitio, luego necesito configurar las rutas nuevamente. Intento require app_path('Http/routes.php'); desde schedule () después de configurar las variables de sesión, pero las rutas no se cambian.

1
Seltix 15 nov. 2017 a las 19:21

2 respuestas

La mejor respuesta

Finalmente tuve éxito en encontrar una solución para esta excavación en el código, por lo que para futuros buscadores esto podría ser útil.

Si necesita reconstruir RUTAS como yo debido a operaciones cron en laravel multisitio u otra razón, finalmente lo hice con este código:

// 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']);

Si puedo ayudar con más información, contácteme.

Gracias a todos.

0
Seltix 28 nov. 2017 a las 21:08

La respuesta está desactualizada, para 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);
0
Ayusf 3 ene. 2019 a las 09:58