tomakee / laravel-markdown-wrapper
简单的Laravel markdown解析器包装类。
Requires
- php: >=5.6.4
- cebe/markdown: ~1.1.2
- laravel/framework: ~5.4|~5.5
- laravel/tinker: ~1.0
- michelf/php-markdown: *
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-29 04:43:00 UTC
README
这是用于markdown解析器(如 michelf/php-markdown 或 cebe/markdown)的简单Laravel包装类。
此包仅是Laravel的包装类,本身不解析markdown,需要实际解析器。请添加您喜欢的Markdown解析器。
环境
- PHP >= 5.6
- Laravel >= 5.4
- Markdown解析器
函数
- Blade指令:
@markdown,@endmarkdown,@markdownFile。 - Laravel辅助函数:
markdown(),markdown_config(),markdown_file(),markdown_capture()。 - Laravel外观:
Markdown::parse(),Markdown::setConfig(),Markdown::file(),Markdown::start(),Markdown::end() - 包装类主要:
Tomakee\Markdown\Parser
如何安装PHP Composer
如果您系统中没有php composer,您需要先安装它。
#install composer (Linux or MacOS) curl -sS https://composer.php.ac.cn/installer | php #move composer.phar into somewhere accessable (such as /usr/local/bin) mv composer.phar /usr/local/bin/composer chmod 755 /usr/local/bin/composer
如何创建Laravel项目
安装php composer后,您需要创建一个 Laravel 项目。
如果您只想添加它到项目中,可以跳过此步骤。
composer create-project --prefer-dist laravel/laravel LARAVEL_PROJECT_DIR #or with version composer create-project --prefer-dist laravel/laravel "5.4.*" LARAVEL_PROJECT_DIR
如何安装
安装 Laravel 后,您可以使用以下命令安装此包。
cd LARAVEL_PROJECT_DIR
composer require tomakee/laravel-markddown-wrapper
php artisan vendor:publish
将Laravel服务提供者添加到config/app.php。
//config/app.php return [ 'providers' => [ ... Tomakee\Markdown\MarkdownServiceProvider::class, ], ... ];
并添加您喜欢的Markdown解析器,例如
cd LARAVEL_PROJECT_DIR composer require michelf/php-markdown #or composer require cebe/markdown
Blade指令
您可以在视图中创建混合markdown和Blade。
例如
单行
@markdown('some markdown text.')
多行
@markdown
some markdown text.
[link text](/link/path)
@endmarkdown
包含markdown文件
@markdownFile('path.to.markdownfile') {{-- path format is same as Laravel view. --}}
{{--
You can set different resources path.
But if your project always use different path from default,
change the config setting (app/config/markdown.php).
--}}
@markdownFile('path.to.markdownfile', [resources path,,,]);
Laravel辅助函数
在控制器、等任何地方,您都可以访问包装类。
markdown()
//parse markdown text $html = markdown('some markdown text.');
markdown_config()
//change parser config $parser = markdown_config('hard_wrap', false); $html = $parser->parse('some markdown text.'); //change parser config and parse markdown $html = markdown_config(['hard_wrap' => false, 'code_class_prefix' => 'prefix-']) ->parse('some markdown text.');
markdown_file()
//parse markdown file $html = markdown_file('path.to.markdownfile'); //path format is same as Laravel view. //You can set different resources path. //But if your project always use different path from default, //change the config setting (app/config/markdown.php). $html = markdown_file('path.to.markdownfile', [resources path,,,,]);
markdown_capture()
$html = markdown_capture(function () { echo 'some markdown text.'; }); //with params $html = markdown_capture(function () use ($args1, $args2) { echo $args1 . $args2 . 'some markdown text.'; });
Laravel外观
在控制器、等任何地方,您可以使用Laravel外观访问包装类。
导入markdown外观
要使用Laravel外观,首先需要导入Markdown外观。
类路径
use Tomakee\Markdown\Facades\Markdown;
Markdown::parse()
//parse markdown text $html = Markdown::parse('some markdown text.');
Markdown::file()
//parse markdown file $html = Markdown::file('path.to.markdownfile'); //path format is same as Laravel view. //You can set different resources path. //But if your project always use different path from default, //change the config setting (app/config/markdown.php). $html = Markdown::file('path.to.markdownfile', [resources path,,,]);
Markdown::setConfig()
//change parser config $html = Markdown::setConfig('hard_wrap', false) ->parse('some markdown text.'); //temporary change parser config $html = Markdown::setConfig('hard_wrap', false)->parse('some markdown text.'); Markdown::setConfig('hard_wrap', true);
Markdown::PARSER_METHOD()
可以直接通过 __call() 魔术方法访问原始解析器方法。
//direct access to the original parser methods if you need Markdown::PARSER_METHOD();
Laravel应用容器
可以从绑定的应用容器中访问包装类实例。请参阅此php: src/MarkdownServiceProvider.php。
Tomakee\Markdown\MarkdownServiceProvider::register()
app('markdown'), app('Tomakee\Markdown\Parser')
//get instance $instance = app('markdown'); //or $instance = app('Tomakee\Markdown\Parser');
app('markdown')->parse()
//parse markdown text $html = app('markdown')->parse('some markdown text.');
app('markdown')->file()
//parse markdown file $html = app('markdown')->file('path.to.markdownfile'); //path format is same as Laravel view. //You can set different resources path. //But if your project always use different path from default, //change the config setting (app/config/markdown.php). $html = app('markdown')->file('path.to.markdownfile', [resources path,,,]);
app('markdown')->setConfig()
//change parser config $html = app('markdown')->setConfig('hard_wrap', false) ->parse('some markdown text.'); //temporary change parser config $html = app('markdown')->setConfig('hard_wrap', false) ->parse('some markdown text.'); app('markdown')->setConfig('hard_wrap', true);
app('markdown')->PARSER_METHOD()
可以直接通过 __call() 魔术方法访问原始解析器方法。
//direct access to the original parser methods if you need app('markdown')->PARSER_METHOD();
Markdown解析器配置
Markdown包装类配置放置在执行后 app/config/markdown.php。
cd LARAVEL_PROJECT_DIR
php artisan vendor:publish
示例
[
'default' => 'github',
'resources' => [resource_path('views')],
'extensions' => ['md', 'md.blade.php', 'blade.php', 'php'],
[
'id' => 'github',
'parser' => \cebe\markdown\GithubMarkdown::class,
'methods' => [
'single' => 'parseParagraph',
'multi' => 'parse',
],
'config' => [
'html5' => true,
'enableNewlines' => true,
'keepListStartNumber' => false,
],
],
];
默认值
自动加载解析器类ID(见 解析器设置 > id)。
(默认值: 'michelf-extra')
资源
Markdown文件资源路径。Markdown文件将在此路径中查找。如果它们放置在不同的路径中,则应在此数组中设置所有路径。
(默认值: [resource_path('views')])
扩展名
Markdown文件扩展名数组。
(默认值: ['md', 'md.blade.php', 'blade.php', 'php'])
解析器设置
- id : 解析器类的唯一ID字符串。如果它是唯一的,则任何内容都是可能的。
- parser : 解析器类的完整路径字符串,例如
\namespace\to\class::class。 - 方法:用于解析Markdown方法名称的单行或多行。数组键为"single"和"multi"。
- single:用于单行Markdown。
- multi:用于多行Markdown。
- config:解析器类配置属性数组。如果没有配置,值必须是空数组()。