douzhanjia0773 2018-04-09 17:45
浏览 307

Laravel View Composer无法正常工作

I've created the following View Composer:

Http\Providers\ComposerServiceProvider

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer(
            'layouts.cart',
            'App\Http\ViewComposers\CartComposer'
        );
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Http\ViewComposers\CartComposer

<?php

namespace App\Http\ViewComposers;

use Iluminate\View\View;
use App\Order;

class CartComposer
{
    public cartDetails = null;

    public function __construct()
    {
        //dd('here1');
        $orderToken = session('o_token');
        $this->cartDetails = Order::getOrderDetails($orderToken);
    }

    public function compose(View $view)
    {
        //dd('here2');
        $view->with('cart', ['total_items' => 7]);
    }
}

Just for the sake of testing, I'm returning a hardcoded array ['total_items' => 7]

And now my view which is included via @include in my header.blade.php:

views\layouts\cart.blade.php

<div class="cart-menu">
  <i class="black large cart icon"></i>
  @if (/*isset($cart->total_items) &&*/ $cart->total_items > 0)
  <div class="floating ui red label cart-items-badge">{{ $cart->total_items }}</div>
  @endif
</div>

I've registered it by adding it to the providers array:

App\Providers\ComposerServiceProvider::class,

When I access my page I'm getting a 'Page is Not Responding' error. I can't even see the Laravel error.

Any suggestion? Thanks

  • 写回答

1条回答 默认 最新

  • dongtu4559 2018-04-18 05:58
    关注

    Use this ComposerServiceProvider file

    namespace App\Providers;
    
    use Illuminate\Support\Facades\View;
    use Illuminate\Support\ServiceProvider;
    
    class ComposerServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap the application services.
         *
         * @return void
         */
        public function boot()
        {
            View::composer(
                'layouts.cart',
                'App\Http\ViewComposers\CartComposer'
            );
        }
    
        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }
    

    views\layouts\cart.blade.php use $cart['total_items'] instead of $cart->total_items

    <div class="cart-menu">
      <i class="black large cart icon"></i>
      @if ($cart['total_items'] > 0)
      <div class="floating ui red label cart-items-badge">{{ $cart['total_items'] }}</div>
      @endif
    </div>
    
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?