Laravel Markdown integrate markdown "curly" braces inside the blade template engine, also giving the possibility of extending CommonMark.
Abandoned in favor of the more flexible Writedown. Which add supports for multiple markdown parsers.
This project requires that the following packages be formerly installed.
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Install via composer's require command:
composer require haleks/laravel-markdown
Install via your projects' composer.json
:
{
...
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"haleks/laravel-markdown": "0.3.*"
},
...
}
Once the package is in the require section you will need to run composer's install
or update
command to pull in the code:
# Install
composer install -o
# or Update
composer update -o
Note: The trailing -o
is an optional option which is used to optimize the autoloader and is considered best practice.
Once the package as been successfully pulled you will need to register the package's service provider to the Laravel's app and optionally add the package's facade by modifying config/app.php
:
...
'providers' => [
...
Haleks\Markdown\MarkdownServiceProvider::class,
],
...
'aliases' => [
...
// Optional facade
'Markdown' => Haleks\Markdown\Facades\Markdown::class,
],
...
Laravel Markdown supports optional configuration.
You will need to pull the configuration in you app's configuration folder to make modifications to the default configuration. You can achieve this with the following artisan command:
php artisan vendor:publish
The configuration file will be created at config/markdown.php
.
The option tags
specifies if you wish to extend blade with markdown tags. If set to true
you will be able to render markdown via the "curly" braces {%
%}
inside your blade.php
files.
The option views
specifies if you wish to intergrate extend views extensions. If set to true
you will be able to render markdown views with the following extensions: *.md
, *.md.php
, and *.md.blade.php
.
The option extensions
specifies which extension you wish to intergrate inside the CommonMark converter. It uses CommonMark environment's addExtension()
method to load the extensions.
You may use the facade to pass markdown and return the equivalent html. The Markdown facade has simply one method convertToHtml('markdown here')
.
$html = Markdown::convertToHtml('# title');
You will need to use the unescaped echo because the converter returns html.
{!! Markdown::convertToHtml('# title') !!}
If the tags
configuration is set to true
. You may use the following "curly" brace short-cut in your *.blade.php
files.
{% '# title' %}
Like Blade's escaped echo {{
}}
the markdown tags are also equipped with the short-cut ternary statement. If the pass variable that doesn't exists the markdown will only parse the default.
{% $variable or 'default' %}
If you are using a JavaScript template engine which uses the markdown "curly" braces, just like Blade's "curly" braces, you may add a leading @
to leave it untouched for the JavaScript template engine.
@{% javascript stuff %}
If the views
configuration is set to true
. You may use views with the following extensions: *.md
, *.md.php
, and *.md.blade.php
. The *.md
views will parse the markdown and return the html equivalent, while the *.md.php
, and *.md.blade.php
will parse the php first and followed by the markdown.
// *.md
# title
text
// *.md.php
# <?php echo 'title' ?>
text
// *.md.php
<?php echo '# title' ?>
text
// *.md.blade.php
# {{ 'title' }}
text
// *.md.blade.php
{{ '# title' }}
text
All the exemple above will output:
<h1>title</h1>
<p>text</p>
You may extend the Markdown compiler with any extension that uses CommonMark environment addExtension()
method.
Here are a few extension known to be compatible:
Laravel Markdown is licensed under The MIT License (MIT).