blade 模板用法遇到了点问题……

我的post表里 有一个字段(post_status)是用来记录文章状态的,有几个值表示不同的状态
public 已发布
pending 待审核
draft 草稿
future 定时
trash 垃圾箱
我想在后台文章的管理页面的表格中显示文章状态(中文)。
目前可以做到的是,可以显示数据库里写入的英文,没有特别好的办法做到中文显示。
想过几个临时办法
0、直接在数据库里写入中文
1、if判断
2、js
3、也就是现在临时在用的办法
控制器里带一组数组到blade模板里

        $posts = Post::with('postcategory')
            ->orderBy('post_id', 'desc')
            ->paginate(10);
        $data = [
            '已发布' => 'public',
            '定时' => 'future',
            '草稿' => 'draft',
            '待审核' => 'pending',
            '垃圾箱' => 'trash'
        ];

        return view('admin.post.index', compact('posts', 'data'));

然后遍历的时候,再用array_search把值换掉

<td>{{array_search($v->post_status,$data)}}</td>

看了一遍文档里,好像也没发现符合的用法,不知道laravel里有什么好的办法可以更便捷的实现这一点么?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
xdeepu

使用修改器

5年前 评论

@xdeepu 非常感谢。昨天还看到这一块了,然而看官方文档没完全理解可以这么用。

5年前 评论

@naibacaixiang

public function getPostStatusAttribute($value)
{
    $poststatus = [
        'public' => '已发布',
        'pending' => '待审核',
        'draft' => '草稿',
        'future' => '定时',
        'trash' => '垃圾箱',
        '' => '外星来客'
    ];
    return $poststatus[$value];
}

在Post的model里 设置一个 访问器 即可完美解决以上需求。 简单粗暴理解的话,访问器是用来查询的。与其对应的还有修改器。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!