我想在 laravel8 惯性 vue 的 vue 中显示使用 markdow 标记的文本。
我知道如何将其转换为刀片模板
{!!Markdown($post->body, ['config' => 'default']) !!}
但它不适用于 vue 模板。
为了解决这个问题,我将 Markdown 转换为 html 到控制器中。
public function Index($id = Null)
{
$this->id = $id;
return Inertia::render('Posts/Index', [
// 'posts' => Post::orderBy('created_at','DESC')->with('user')->get()
'posts' => Post::select('id', 'title', 'abstract', 'created_at')
->addSelect([
'userfirstname' => User::select('firstname')->whereColumn('id', 'posts.user_id'),
'userlastname' => User::select('familyname')->whereColumn('id', 'posts.user_id')
])
->orderBy('created_at', 'DESC')
->get(),
//lazily evaluated
'details' => function () {
$post = Post::find($this->id);
$parser = new Parsedown();
$post->body = $parser->text($post->body);
return $post;
}
]);
}
}
此控制器用于更新包含在主 vue 中的组件。这是组件的vue
<template>
<div class="container bg-gray-100">
{{details.title}}
{{details.body}}
</div>
</template>
<script>
export default {
name: "PostDetails",
props: ["details"],
};
</script>
组件在访问 url 时正确更新,但出现的文本显示 html 标记,就像使用文本编辑器一样。如何正确解释 html 标记?