2016-02-18 4 views
1

Я хочу передать данные из таблицы настроек из базы данных в мой макет.Передача данных настройки из базы данных в макет

Как это сделать?

$item = Setting::find(1); 
return view($this->controller.'/show')->with('item', $item); 

Решение:

public function boot() { 
    if(!isset($_SESSION['adminTitle'])){ 
     $item = Setting::find(1); 
     $item = $item->toArray(); 
     $_SESSION['adminTitle'] = $item['title']; 
     $_SESSION['adminEmail'] = $item['email']; 
     $_SESSION['adminLogo'] = $item['logo']; 
    } 
} 

ответ

1

Почему бы не просто это ?:

// File app/Http/Controllers/ExampleController.php 

// 

class ExampleController extends Controller 
{ 
    public function show() 
    { 
    // 

    $setting = Setting::find(1); 
    return view('example', ['setting' => $setting]); 
    } 

} 

В целях клинка:

<!-- resources/views/example.blade.php --> 

{{ $setting->title }} 
{{ $setting->logo }} 
... 

Но, если вы хотите поделиться настройками между всеми ваших взглядов, вы можете добавить это промежуточное программное обеспечение:

// File app/Http/Middleware/ViewShareSettingMiddleware 

// 

class ViewShareSettingMiddleware 
{ 
    public function handle($request, Closure $next) 
    { 
    $setting = Setting::find(1); 
    view()->share('setting', $setting); 
    return $next($request); 
    } 

} 
+0

Это тоже решение, но тогда вы всегда получаете данные из базы данных, а не из сеансов. – Bas

+1

@ На ваш вопрос: «Передайте данные настройки из * базы данных в макет *». Если вы не хотите загружать их из db каждый раз, когда вы можете попытаться использовать некоторую систему кеширования (https://laravel.com/docs/5.2/cache). – Andrea

+0

@Bas Почему вам нужно получить их из сеанса, а не напрямую из базы данных? – Andrea

0

Создать свой вид в:

\ Resources \ представления \

Пример: \resources\views\index.blade.php

$data['item'] = Setting::find(1); 
return view('index') 
      ->with($data); 

Или

$item = Setting::find(1); 
return view('index', compact('item'); 

Вид: {{$item}}

+0

Но где я должен объявить его? В AppServiceProvider? И как? – Bas

+0

Проверьте мое редактирование, похоже, что у вас нет вида макета. –

+0

У меня есть ресурсы/views/layouts/app.blade.php Но где я должен положить $ item = Setting :: find (1); и т. д. – Bas

Смежные вопросы