试图访问数组的控制器中的Laravel 5.8问题

时间:2019-04-11 03:39:01

标签: php laravel eloquent

我试图在Laravel应用中的一个控制器中循环遍历一个数组,然后将其传递给视图。

当前抛出错误“试图获取非对象的属性” ,它告诉我数组返回为空?

在下面的控制器中,我试图将一个数组默认设置为空,然后将值传递给该数组,然后再将其传递给视图,就像这样:

收件人控制器

 public function edit($id)
    {
        $recipe = Recipe::find($id);
        $tags = Tag::all();
        $tags2 = array();
        foreach ($tags as $tag){
            $tags2[$tag->id] = $tag->name;
        }

        return view('recipes.edit')->with('recipe', $recipe)->with('tags', $tags2);
    } 

我的观点

           <fieldset>
                    <small class="errorMessage"></small>
                    <label for="tags">Tags</label>
                    <select name="tags[]" id="tagsList" class="select2-multi" multiple="multiple">
                        @foreach($tags as $tag)
                             <option value="{{$tag->id}}">{{$tag->name}}</option>
                        @endforeach
                    </select>
            </fieldset>

这样做的目的是更新配方上的现有标签(我的配方相当于此应用程序上的帖子)。存储和显示标签的效果很好,但是编辑是我遇到麻烦的地方。如果您看到我看不到的东西,请告诉我。

1 个答案:

答案 0 :(得分:3)

使用此代码

public function edit($id)
{
    $recipe = Recipe::find($id);
    $tags = Tag::pluck('name', 'id');

    return view('recipes.edit')->with('recipe', $recipe)->with('tags', $tags);
}

可见

@foreach($tags as $id => $name)
     <option value="{{$id}}">{{$name}}</option>
@endforeach