#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 option2. @Donkarnash, да, спасибо, что указали на это