Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет.
Подскажите, мне нужно вывести на всех страницах количество товара в корзине, то есть вьюх много, а вывод всегда один
Вот так выглядит основная страница
<!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') на всех страницах отсылалось нужное мне значение
Не в сети
View composer
Не в сети
Что то я не пойму, статьи есть но как то смысл не понятен, можете объяснить?
Не в сети
Сделал следующее
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'.
В итоге сайт отвалился с ошибкой
Не в сети
Проблема решена, ошибка была в названии класса, не class CabinetComposer а HeadComposer
Спасибо за наводку
Не в сети
Зачем столько телодвижений?))
В App/Providers/AppServiceProvider вставьте этот код
public function boot()
{
view()->composer('путь до вьюхи',function($view) {
$view->with('catalog', Catalog::groupBy('id')->get());
});
}
Catalog замените на свою модель
Не в сети
Спасибо, учту )))
Не в сети
А я виджеты для таких целей использую
https://packagist.org/packages/arrilot/laravel-widgets
Довольно удобно
Не в сети
Страницы 1