que - Caminos dinámicos para laravel 5
para que sirve el yield laravel (1)
puntos de vista
Usando un proveedor de servicios puede usar lo siguiente en su método de boot()
para que las vistas estén disponibles en el espacio de nombres raíz ( view(''your-view'')
lugar de view(''package::your-view'')
):
$this->app[''view'']->addLocation(''/your/new/location'');
lang
Utilizando un proveedor de servicios puede usar lo siguiente en su método boot()
donde $path
es la nueva ruta para sus traducciones de espacio de nombres raíz:
$app->bindShared(''translation.loader'', function($app) use ($path)
{
return new /Illuminate/Translation/FileLoader($app[''files''], $path);
});
$app->bindShared(''translator'', function($app)
{
$translator = new /Illuminate/Translation/Translator($app[''translation.loader''], $app[''config''][''app.locale'']);
$translator->setFallback($app[''config''][''app.fallback_locale'']);
return $translator;
});
rutas
Routes es de lejos el más fácil. Simplemente /File::requireOnce()
usando require_once
o usando el método de Laravel: /File::requireOnce()
.
config
Utilicé un directorio que permitiría a un inquilino anular las configuraciones centrales. Por favor, avise que no hay controles de seguridad ni de cordura aquí, por lo que el acceso debe ser limitado.
Usando un proveedor de servicios puede usar lo siguiente en su método boot()
foreach (/File::allFiles(''/path/to/configs'') as $path) {
$key = /File::name($path);
$app[''config'']->set($key, array_merge(require $path, $app[''config'']->get($key, [])));
}
Esto fusionará las configuraciones existentes anulando sus valores con los archivos de configuración proporcionados.
vendedor
Realmente interesante es la posibilidad de usar clases cargadas dinámicamente. Para hacer esto, necesitará usar el addDirectories()
ClassLoader
addDirectories()
en su proveedor de servicios.
/Illuminate/Support/ClassLoader::addDirectories([''/path/to/vendors'']);
consideraciones adicionales
El código anterior puede implementarse utilizando proveedores de servicios. Para que un proveedor de servidores funcione, debe agregarlos al archivo config/app.php
en la matriz de providers
. De lo contrario, no se habilitará ningún código en el proveedor de servicios.
Mientras construía paquetes multi-tenancy para Laravel 5 , tuve que descubrir cómo hacer dinámicas las rutas de acceso y los espacios de nombres.
Esto implicaría:
- puntos de vista; agregar un directorio de plantilla dinámicamente que está disponible en el espacio de nombres raíz
- lang; agregar un directorio de idioma dinámicamente disponible en el espacio de nombres raíz
- rutas; agregando un archivo de rutas dinámicamente
- config; fusionar archivos de configuración adicionales desde una ubicación dinámica
- vendedor; permitiendo que los proveedores y paquetes personalizados estén disponibles desde una ubicación dinámica