Laravel 博客开发|模型访问器

当你在 Eloquent 模型实例中获取或设置某些属性值的时候,访问器和修改器允许你对 Eloquent 属性值进行格式化。例如,你可能需要使用 Laravel 加密器来加密保存在数据库中的值,而在使用 Eloquent 模型访问该属性的时候自动进行解密其值。

或者,当通过 Eloquent 模型访问存储在数据库的 JSON 字符串时,你可能希望将其转换为数组。

访问器会在访问一个模型的属性时转换 Eloquent 值。要定义访问器,请在模型中创建一个受保护的「驼峰式」方法来表示可访问属性。此方法名称对应到真正的底层模型 属性/数据库字段 的表示。

现在使用访问器来修改之前解析 Markdown 内容的逻辑,ArticlesController控制器中的 show方法和 getDetailBySlug方法都有如下一行代码:

$article->content = $parsedown->parse($article->content);

上面代码实现将文章详情 Markdown 格式的内容转换为 HTML 格式的内容,这样的实现方式不太好,需要写重复的逻辑,可以使用模型访问器实现。

添加访问器:

修改文章模型,在里面添加一个访问器,获取 Markdown 内容转化后的内容。
app/Models/Article.php

.
.
.  
class Article extends Model
{   
    .
    .
    .  
    protected function parseContent(): Attribute
    {
        $parsedown = new Parsedown();
        return Attribute::make(
            get: fn () => $parsedown->parse($this->content),
        );
    }
}

修改控制器

修改ArticlesController控制器中的 show方法和 getDetailBySlug方法,下面这行:

$article->content = $parsedown->parse($article->content);

修改视图

resource/views/articles/show.blade.php中找到下面这行:

{!! $article->content !!}

修改为:

{!! $article->parse_content !!}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SevDot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值