Después de de nuestra larga compilación de datos resolvimos este disgusto que suelen tener ciertos lectores. Te brindamos la respuesta y nuestro deseo es resultarte de gran apoyo.
Solución:
Al principio, un archivo de configuración es apropiado para este tipo de cosas, pero también puede usar otro enfoque, que se muestra a continuación (Laravel – 4):
// You can keep this in your filters.php file
App::before(function($request)
App::singleton('site_settings', function()
return Setting::all();
);
// If you use this line of code then it'll be available in any view
// as $site_settings but you may also use app('site_settings') as well
View::share('site_settings', app('site_settings'));
);
Para obtener los mismos datos en cualquier controlador, puede usar:
$site_settings = app('site_settings');
Hay muchas formas, solo usa una u otra, cual prefieres pero yo estoy usando la Container
.
De acuerdo, voy a ignorar por completo la cantidad ridícula de ingeniería y suposiciones que abundan en las otras respuestas, e iré con la opción simple.
Si está de acuerdo con que haya una sola llamada a la base de datos durante cada solicitud, entonces el método es simple, alarmantemente:
class BaseController extends Controller
protected $site_settings;
public function __construct()
// Fetch the Site Settings object
$this->site_settings = Setting::all();
View::share('site_settings', $this->site_settings);
Ahora, siempre que todos sus controladores amplíen este BaseController, simplemente pueden hacer $this->site_settings
.
Si desea limitar la cantidad de consultas en varias solicitudes, puede usar una solución de almacenamiento en caché como se proporcionó anteriormente, pero según su pregunta, la respuesta simple es una propiedad de clase.
Utilice la clase de configuración:
Config::set('site_settings', $site_settings);
Config::get('site_settings');
http://laravel.com/docs/4.2/configuration
Los valores de configuración que se establecen en tiempo de ejecución solo se establecen para la solicitud actual y no se transferirán a solicitudes posteriores.
Acuérdate de que puedes permitirte agregar una reseña si diste con la respuesta.