LARAVEL: Показывать слаг в URL вместо ID - Список категорий - PullRequest
0 голосов
/ 21 мая 2019

В 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 голосов
/ 21 мая 2019

для вашего маршрута

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

Надеюсь, я хорошо понимаю ваш вопрос, дайте мне знать, если возникнут сомнения

0 голосов
/ 21 мая 2019

Согласно нашему обсуждению в разделе комментариев, вот что я вывел

В вашем файле web.php вы можете добавить этот маршрут, чтобы точно указать на странице категорий

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

Часть {id} здесь говорит о том, что она может быть изменена в любое время или может быть необязательной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...