динамически возвращающие представления с помощью цикла foreach - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть цикл foreach, который запускается моей базой данных:

<div id="nav" >
  @foreach(\App\Categories::whereNull('parent_id')->get() as $category)
     <a id="link1" href="{{ route('showCategory' , $category->id) }}" ><div class="link">{{ $category->name }}</div></a>
  @endforeach
</div>

Мне нужна ссылка foreach, которая добавляет, что она динамически знает свой путь к блейдам.

Что мне делатьздесь?

Мой web.php:

Route::get('/category/{category}', 'PagesController@showCategory')->name('showCategory');

Мой контроллер:

public function showCategory(Categories $category) {

}

1 Ответ

0 голосов
/ 12 ноября 2018

Я предполагаю, что вы хотите создать ссылку для каждой категории, которая ведет на страницу, на которой отображается дополнительная информация о выбранной категории.

Ваш блейд-файл, в котором вы создаете ссылки для всех категорий.мне кажется, что все в порядке, но я бы порекомендовал изменить файл маршрута на следующий:

Route::get('/category/{id}', 'PagesController@showCategory')->name('showCategory');

Тогда для вашей функции showCategory вам понадобится что-то вроде этого:

public function showCategory($id) {
    $category = Categories::find($id);

    // i used categories.show here, change it to whatever view you use
    return view('categories.show')->with('category', $category);
}

Затем в вашем представлении categories.show вы можете получить доступ к свойствам категории следующим образом:

$category->id; // or whatever you want to display


Согласно запросу OP: первый5 категорий в базе данных, которые ведут к их страницам:


В вашем контроллере:

public function myFunction()
{
   $categories = Categories::all()->take(5)->get();

   return view('your.view')->with('categories', $categories);
}

В вашем блэйд-представлении (при условии, что представление для категории находится на: /category/id):

@foreach($categories as $category)
   <a href="/category/{{$category->id}}">{{$category->name}}</a>
@endforeach
...