Laravel:在URL中显示SLUG而不是ID-类别列表



在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>

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

在您的 web.php 文件中,您可以将此路由添加到专门的指定到您的类别页面

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

这里的{id}部分告诉它可以随时更改或可以是可选的

用于您的路线

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

希望,我很好地了解您的问题,让我知道是否有任何疑问

最新更新