как перебирать параметры категории с помощью файла edit blade в Laravel 6

#php #laravel

#php #laravel

Вопрос:

работаю с laravel 6 и нуждаюсь в редактировании параметров категории здесь. PostController.php

 public function edit($id)
    {
        $post = Post::find($id);
        $categories = Category::all();
        $cats = array();
        foreach ($categories as $category) {
            $cats[$category->id] = $category->name;
        }
        return view('posts.edit')->withPost($post)->withCategories($cats);
    }
 

и edit.blade.php

 <div class="form-group">
    <label for="exampleFormControlSelect1">Category</label>

    <select class="form-control" name="category_id" id="category_id">
      @foreach($categories as $cats)
      <option value="{{$post->category->id}}">{{$post->category->name}}</option>
      @endforeach
      </select>
</div>
 

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

Комментарии:

1. Я не понимаю, чего вы пытаетесь достичь… В контроллере вы передаете $ cats, затем в представлении вы повторяете $categories как $cats, но для опции вы используете $post-> category-> id, который всегда будет одним и тем же… Вы пытаетесь изменить категорию публикации?

2. может быть, вам нужно что-то вроде @foreach($categories как $key => $name) <значение параметра=»{{$key}}»> {{$name}}</option> …

3. да, мне нужен ваш второй комментарий

4. он еще не работает

Ответ №1:

просто так :

Контроллер

 public function edit($id)
{
        $post = Post::findOrFail($id);
        $categories = Category::all();
        return view('posts.edit', compact(['post', 'categories']));
}
 

Вид

 <div class="form-group">
   <label for="exampleFormControlSelect1">Category</label>

   <select class="form-control" name="category_id" id="category_id">
      @foreach($categories as $cat)
           <option value="{{$cat->id}}" @if($cat->id === $post->category_id) 'selected' @endif >{{$cat->name}}</option>
      @endforeach
   </select>
</div>
 

Комментарии:

1. Это должно быть $cat->id === $post->category_id в теге @if on option

2. @Donkarnash, да, спасибо, что указали на это