0

当我在模型中创建一个名为“statuses”的变量并在控制器中调用它时,我得到了数组数据。但是,当调用第二个变量时,它返回 null 并在刀片中给我错误。

在模型中

/**
 * Statuses.
 *
 * @var array
 */
protected $statuses = [
    0 => 'InActive',
    1 => 'Published',
    2 => 'Draft',
    3 => 'Scheduled',
];

/**
 * Visibilities.
 *
 * @var array
 */
protected $visibilities = [
    0 => 'Public',
    1 => 'Private',
    2 => 'Password Protected',
];

在控制器中

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    $article        = new Post();
    $categories     = Category::all();
    $tags           = Tag::all();
    $statuses       = $article->statuses;
    $visibilities   = $article->visibilities;

    return view('posts.create', compact('categories','tags','statuses', 'visibilities'));
}

dd($article)我得到

文章的dd

dd($statuses)我得到

状态

当我dd($visibilities)在那里返回null时

而不是我在刀片中调用它

                        @foreach($visibilities as $key => $value)
                            <option value="{{ $key }}" {{ (isset($post->visibility) && $post->visibility == $key) ? 'selected' : '' }} >{{$value}}</option>
                        @endforeach

我收到一条错误消息

为 foreach() 提供的参数无效(查看:

我做错了什么来获得可见性的空回报?

编辑:我正在粘贴我的关系特征

namespace App\Models\Traits\Attributes;

trait BlogAttributes
{
    /**
     * @return string
     */
    public function getActionButtonsAttribute()
    {
        return '<div class="btn-group" role="group" aria-label="'.trans('labels.backend.access.users.user_actions').'">'.
                $this->getEditButtonAttribute('edit-blog', 'admin.blogs.edit').
                $this->getDeleteButtonAttribute('delete-blog', 'admin.blogs.destroy').
                '</div>';
    }

    /**
     * Get Display Status Attribute.
     *
     * @var string
     */
    public function getDisplayStatusAttribute(): string
    {
        return $this->statuses[$this->status] ?? null;
    }

    /**
     * Get Statuses Attribute.
     *
     * @var string
     */
    public function getStatusesAttribute(): array
    {
        return $this->statuses;
    }

        /**
     * Get Display Visibility Attribute.
     *
     * @var string
     */
    public function getDisplayVisibilityAttribute(): string
    {
        return $this->visibilities[$this->visibility] ?? null;
    }

    /**
     * Get Visibility Attribute.
     *
     * @var string
     */
    public function getDisplayVisibilitiesAttribute(): array
    {
        return $this->visibilities;
    }
}
4

1 回答 1

0

感谢@lagbox 帮助解决了这个问题。

它正在更改getDisplayVisibilitiesAttribute()getVisibilitiesAttribute()

于 2022-02-04T14:58:02.083 回答