【问题标题】:Laravel 5.8 issue in controller trying to access array控制器中的 Laravel 5.8 问题试图访问数组
【发布时间】:2023-03-13 05:17:01
【问题描述】:

我正在尝试遍历 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>

这样做的目的是更新食谱上的现有标签(我的食谱相当于此应用程序上的帖子)。存储和显示标签工作正常,但编辑是我遇到问题的地方。如果您看到我没有看到的内容,请告诉我。

【问题讨论】:

  • 由于您的$tags2array,因此您无法将其属性作为对象表示法访问。您需要在刀片文件中使用数组表示法。 &lt;option value="{{$tag['id']}}"&gt;{{$tag['name']}}&lt;/option&gt;

标签: php laravel eloquent


【解决方案1】:

使用此代码

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

【讨论】:

  • 效果太棒了!谢谢你。如果您不介意我问的话,Tag::pluck() 中的“pluck”是什么??
  • 搜索pluck
  • Retrieving A List Of Column Values
猜你喜欢
  • 2019-11-26
  • 2023-03-22
  • 2019-08-11
  • 2013-05-28
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多