59.为被 @ 的用户名加上链接

未匹配的标注

本节说明

  • 对应视频教程第 59 小节:Wrap Usernames Within Anchor Tags

本节内容

本节我们为被 @ 的用户名加上链接,点击可以跳转到该用户的个人页面。首先依旧是新建测试:
forum\tests\Unit\ReplyTest.php

    .
    .
    /** @test */
    public function it_warps_mentioned_usernames_in_the_body_within_archor_tags()
    {
        $reply = create('App\Reply',[
            'body' => 'Hello @Jane-Doe.'
        ]);

        $this->assertEquals(
            'Hello <a href="/profiles/Jane-Doe">@Jane-Doe</a>.',
            $reply->body
        );
    }
}

我们利用 修改器来修改body属性的值:
forum\app\Reply.php

    .
    .
    public function setBodyAttribute($body)
    {
        $this->attributes['body'] = preg_replace('/@([\w\-]+)/','<a href="/profiles/$1">$0</a>',$body);
    }
}

注意我们使用了不同的正则表达式,我们待会儿会谈到这个问题

运行测试:
file
运行全部测试:
file
有两个测试未通过,这是因为现在我们回复的内容中的用户名会被a标签包裹,所以需要更新我们的正则表达式:
forum\app\Reply.php

    .
    .
    public function mentionedUsers()
    {
        preg_match_all('/@([\w\-]+)/',$this->body,$matches);

        return $matches[1];
    }
    .
    .

再次运行测试:
file

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。