想法
用 Markdown 寫文件很方便,如果文件裡能嵌入 Blade 語法(像是 @include 或變數)就更好了。Laravel 的 Blade 引擎支援自訂副檔名,可以把 .md 檔也丟給 Blade 處理。
做法
安裝 Markdown 套件
安裝 league/commonmark:
1
| composer require league/commonmark
|
Controller
以下範例使用 league/commonmark v2(v1 的 API 不同):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| use Illuminate\View\Factory;
use League\CommonMark\GithubFlavoredMarkdownConverter;
class DocsController extends Controller
{
private $viewFactory;
public function __construct(Factory $viewFactory)
{
$this->viewFactory = $viewFactory;
// 讓 .md 檔用 Blade 引擎處理
$this->viewFactory->addExtension('md', 'blade');
}
public function index() {
$converter = new GithubFlavoredMarkdownConverter([
'allow_unsafe_links' => false,
]);
// 先經過 Blade 編譯,再轉成 HTML
return $converter->convert($this->viewFactory->make('demo.md'));
}
}
|
流程是:Blade 先處理 demo.md 裡的變數和指令,輸出純 Markdown 字串,再交給 CommonMark 轉成 HTML。
參考資源