首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel-5.7:所有类别都没有显示在db的标头中

Laravel-5.7:所有类别都没有显示在db的标头中
EN

Stack Overflow用户
提问于 2019-01-15 16:18:08
回答 2查看 379关注 0票数 0

我试图得到所有的主要类别在标题的网站,但只有一个类别显示,谁能提供这个解决方案?

以下是ProductsController:

ProductsController.php

代码语言:javascript
复制
public function products($url = null)
{

  $categories = Category::with('products')->where(['parent_id'=>0])->get();
  $categoryDetails = Category::where(['url' => $url])->first();

  if($categoryDetails->parent_id==0)
  {
      //if url is main category url
      $subCategories = Category::where(['parent_id'=>$categoryDetails])->get();
      $cat_ids = "";
      foreach ($subCategories as $subCat) {
          $cat_ids .= $subCat->id.",";
      }
      $productsAll = Product::whereIn('category_id',array($cat_ids))->get();
  }
  else
  {
      //if url is sub category url
      $productsAll = Product::where(['category_id' => $categoryDetails->id])
                          ->get();
  }

  return view('products.listing')
            ->with(compact('categories','categoryDetails','productsAll'));
}

listing.blade.php上,我写了这篇文章,将它与类别联系起来:

代码语言:javascript
复制
{{ $categoryDetails->name }}

主计长守则:

Controller.php

代码语言:javascript
复制
<?php

  namespace App\Http\Controllers;

  use Illuminate\Foundation\Bus\DispatchesJobs;
  use Illuminate\Routing\Controller as BaseController;
  use Illuminate\Foundation\Validation\ValidatesRequests;
  use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  use App\Category;

  class Controller extends BaseController
  {
   use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public static function mainCategories(){
    $mainCategories = Category::where(['parent_id' => 0])->get();
    $mainCategories = json_decode(json_encode($mainCategories));
    /*echo "<pre>"; print_r($mainCategories); die;*/
    return $mainCategories;
    }
   }

我在header视图中编写的代码:

header.blade.php

代码语言:javascript
复制
<?php use App\Http\Controllers\Controller;
  $mainCategories =  Controller::mainCategories();
?>

<!--some html-->

@foreach($mainCategories as $cat)
          <div class="dropdown-content">
               <a href="{{ asset('products/'.$cat->url) }}" style="margin-bottom: -10px;">{{ $cat->name }}</a>
          </div>
@endforeach
EN

回答 2

Stack Overflow用户

发布于 2019-01-15 16:30:29

试着改变

代码语言:javascript
复制
<?php use App\Http\Controllers\Controller;
  $mainCategories =  Controller::mainCategories();
?>

代码语言:javascript
复制
<?php 
  use App\Controller;
  $mainCategories =  Controller::mainCategories();
?>

或更直接地:

代码语言:javascript
复制
<?php 
   $mainCategories =  App\Controller::mainCategories();
?>

header.blade.php

票数 0
EN

Stack Overflow用户

发布于 2019-01-15 18:03:20

您可以为此使用视图数据(https://laravel.com/docs/master/views#passing-data-to-views):

在您的App/Providers/AppServiceProvider.php文件中:

代码语言:javascript
复制
public function boot()
{
    View::share('mainCategories', Category::where(['parent_id' => 0])->get());
}

只需使用:

代码语言:javascript
复制
@foreach($mainCategories as $cat)
  // .... your code
@endforeach

在模板文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54202818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档