LARAVEL:显示网址中的信息,而不是ID-类别列表

时间:2019-05-21 01:02:27

标签: php laravel laravel-5 frameworks laravel-5.2

在URL中,我想显示slug而不是ID。我已经尝试过了:

{{ url('/produits/'.$category->slug) }}

,但不返回任何结果。我该怎么办?

谢谢!

web.php

Route::get('/produits/{id?}', 'Controller@produits');

控制器

public function produits($id = null){
      if($id){
        $produits = Post::orderBy('created_at', 'desc')
                    ->whereStatus('PUBLISHED')
                    ->whereCategoryId($id)
                    ->take(10)->get();
      }else {
        $produits = Post::orderBy('created_at', 'desc')
                    ->whereStatus('PUBLISHED')
                    ->take(10)->get();
      }
        $categories = Category::all();
        return view('Mywebsite.produits', ['id' => $id, 'mesProduits' => $produits, 'mesCategories' => $categories]);
    }

Products.php

    <nav id="nav-top">
      <ul>
        <li> <a href="{{ url('/produits') }}">Tous les produits</a></li>
        @foreach ($mesCategories as $category)
        <li><a href="{{ url('/produits/'.$category->id) }}">{{ $category->name }} -({{ $category->posts->count() }})</a></li>
        @endforeach
      </ul>
    </nav>

    <div class="lx-products-list lx-bloc-content">
      <div class="lx-products-items">
        @foreach ($mesProduits as $produit)
        <div class="lx-g4 lx-g5-to-g2">
          <div class="lx-products-item">
            <a href="Produit/39.html">
              <div class="lx-products-item-img">
                <a href="{{ url('/produit/'.$produit->slug) }}">
                  <img src="{{ asset('/storage/'.$produit->image) }}" />
                </a>
              </div>    
              <h4>{{ $produit->category->name }}</h4>   
              <div class="lx-products-item-detail">
                <h2 class="haha2"><i style="color:#fdd043;" class="fas fa-shopping-cart"></i><a href="{{ url('/produit/'.$produit->slug) }}">{{ str_limit($produit->title, 30) }}</a></h2>

                <p class="para">
                  <ins>
                  {{ $produit->prix }}  درهم

                  </ins>    
                </p>

              </div>    
            </a>
          </div>
        </div>
        @endforeach

      </div>
    </div>
    <div class="lx-clear-fix"></div>
    </br></br></br>
  </div>
</div>

2 个答案:

答案 0 :(得分:0)

根据我们在评论部分的讨论,这是我推论的

在您的 web.php 文件中,您可以添加此路线以专门查明您的类别页面

Route::get('/produits/category-{id?}', 'ZamzamController@produits');

这里的{id}部分表明可以随时更改,也可以是可选的

答案 1 :(得分:0)

适合您的路线

Route::get('/produits/{id?}', 'Controller@produits');

您可以使用参数按如下所示获取它。

$url = action('Controller@produits', ['id' => $MyWebsite->id]);

通过上述方法,您将显示“ $ MyWebsite-> id”,只需用Slug($ MyWebsite-> slug)进行更改,即可开始使用。

参考:https://laravel.com/docs/5.2/helpers#method-action

希望,我很了解您的问题,如有任何疑问,请告诉我