Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.06.2016 21:11:36

Передать значение во все views

Всем привет.
Подскажите, мне нужно вывести на всех страницах количество товара в корзине, то есть вьюх много, а вывод всегда один
Вот так выглядит основная страница

<!doctype html>
<html class="no-js" lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>HOTTIME</title>
	<link rel="stylesheet" href="/frontend/css/foundation.min.css" />
    
    <link rel="stylesheet" href="/frontend/css/app2.css" />
	<link rel="stylesheet" href="/frontend/css/select2.css" />
	<link rel="stylesheet" href="/frontend/css/font-awesome.min.css">
	<link rel="stylesheet" href="/frontend/css/essential-light-styles.css">
	<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,700,500&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
  </head>
  <body @yield('body_data') >
    <div class="off-canvas-wrapper">
    <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper>
		<div class="off-canvas position-left" id="offCanvasLeft" data-off-canvas></div>
		<div class="off-canvas-content" data-off-canvas-content>
        @include('head')
    
        @yield('content')
        
        @include('footer')
        </div>
        </div>
        </div>
	
    <script src="/frontend/js/modernizr-custom.js"></script>
    <script src="/frontend/js/vendor/jquery.min.js"></script>
    <script src="/frontend/js/vendor/what-input.min.js"></script>
    <script src="/frontend/js/foundation.min.js"></script>
    <script src="/frontend/js/main.js"></script>
    
    @yield('js_script')
	
  </body>
</html>

Как мне сделать так, что в @include('head') на всех страницах отсылалось нужное мне значение

Не в сети

#2 15.06.2016 22:06:25

Re: Передать значение во все views

View composer

Не в сети

#3 16.06.2016 01:31:51

Re: Передать значение во все views

Что то я не пойму, статьи есть но как то смысл не понятен, можете объяснить?

Не в сети

#4 16.06.2016 01:43:53

Re: Передать значение во все views

Сделал следующее
App\Http\Composers\HeadComposer.php

<?php namespace App\Http\Composers;

use Illuminate\Contracts\View\View;
use Illuminate\Routing\Route;

use Auth;

class CabinetComposer {

    /**
     * The user repository implementation.
     *
     * @var UserRepository
     */
    protected $aHeadData;
    
    /**
     * Create a new profile composer.
     *
     * @param  UserRepository  $users
     * @return void
     */
    public function __construct(Route $route)
    {
        
    }

    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $aHeadData = ['test' => 'test 123'];
        $view->with('aHeadData', $aHeadData);
    }

}

Далее
App\Providers\ComposerServiceProvider.php

namespace App\Providers;

use View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider {

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('head', 'App\Http\Composers\HeadComposer');
    }


    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
    }
}

config/app.php и в providers добавил 'App\Providers\ComposerServiceProvider'.

В итоге сайт отвалился с ошибкой

Не в сети

#5 16.06.2016 01:46:03

Re: Передать значение во все views

Проблема решена, ошибка была в названии класса, не class CabinetComposer  а HeadComposer
Спасибо за наводку

Не в сети

#6 16.06.2016 10:04:11

Re: Передать значение во все views

Зачем столько телодвижений?))
В App/Providers/AppServiceProvider вставьте этот код

public function boot()
    {
        view()->composer('путь до вьюхи',function($view) {
            $view->with('catalog', Catalog::groupBy('id')->get());
        });
    }

Catalog замените на свою модель

Не в сети

#7 19.06.2016 01:47:28

Re: Передать значение во все views

Спасибо, учту )))

Не в сети

#8 19.06.2016 05:59:18

Re: Передать значение во все views

А я виджеты для таких целей использую
https://packagist.org/packages/arrilot/laravel-widgets
Довольно удобно

Не в сети

Подвал раздела