php-collective/symfony-djot
最新稳定版本:0.2.0
Composer 安装命令:
composer require php-collective/symfony-djot
包简介
Symfony bundle integration for php-collective/djot
README 文档
README
Djot markup language integration for Symfony — Twig filters, services, forms, and validation.
Installation
composer require php-collective/symfony-djot
Usage
Twig Filter
{# Safe by default - XSS protection enabled #} {{ article.body|djot }} {# For trusted content only - no XSS protection #} {{ trustedContent|djot_raw }} {# Plain text output #} {{ article.body|djot_text }}
Service
use PhpCollective\SymfonyDjot\Service\DjotConverterInterface; class ArticleController { public function show(DjotConverterInterface $djot): Response { $html = $djot->toHtml($article->body); $text = $djot->toText($article->body); } }
Configuration
# config/packages/symfony_djot.yaml symfony_djot: converters: # Default has safe_mode: true (XSS protection enabled) default: ~ # For trusted content (admin, CMS) trusted: safe_mode: false cache: enabled: false pool: cache.app
Multiple Converter Profiles
Use different configurations for different contexts:
{# Default is safe #} {{ comment.body|djot }} {# Use named converter for trusted content #} {{ article.body|djot('trusted') }} {# Or use djot_raw for quick trusted rendering #} {{ article.body|djot_raw }}
public function __construct( // Default converter (safe mode enabled) private DjotConverterInterface $djot, // Trusted converter (safe mode disabled) #[Autowire(service: 'symfony_djot.converter.trusted')] private DjotConverterInterface $trusted, ) {}
Safe Mode
Safe mode is enabled by default for XSS protection. Disable only for trusted content:
symfony_djot: converters: trusted: safe_mode: false
Extensions
Enable djot-php extensions per converter:
symfony_djot: converters: default: extensions: - type: autolink - type: smart_quotes - type: heading_permalinks symbol: '#' position: after with_mentions: extensions: - type: mentions user_url_template: 'https://github.com/{username}' - type: table_of_contents
Available extensions:
admonition- Admonition blocks (note, tip, warning, danger, etc.)autolink- Auto-convert URLs to clickable linkscode_group- Transform code-group divs into tabbed interfacesdefault_attributes- Add default attributes to elements by typeexternal_links- Configure external link behavior (target, rel)frontmatter- Parse YAML/TOML/JSON frontmatter blocksheading_level_shift- Shift heading levels up/downheading_permalinks- Add anchor links to headingsheading_reference- Link to headings with[text](#heading)syntaxinline_footnotes- Convert spans with class to inline footnotesmentions- Convert @username to profile linksmermaid- Render Mermaid diagram code blockssemantic_span- Convert spans to<kbd>,<dfn>,<abbr>elementssmart_quotes- Convert straight quotes to typographic quotestable_of_contents- Generate TOC from headingstabs- Tabbed content blocks (CSS or ARIA mode)wikilinks- Support[[Page Name]]wiki-style links
See Extensions documentation for detailed configuration options.
Form Type
Use the DjotType for form fields that accept Djot markup:
use PhpCollective\SymfonyDjot\Form\Type\DjotType; $builder->add('body', DjotType::class);
Validation
Validate that a field contains valid Djot markup:
use PhpCollective\SymfonyDjot\Validator\Constraints\ValidDjot; class Article { #[ValidDjot] private string $body; }
Documentation
Full documentation: php-collective.github.io/symfony-djot
- Installation
- Configuration
- Twig Usage
- Service Usage
- Forms
- Validation
- Safe Mode
- Extensions
- Caching
- Djot Syntax
Demo Application
See the symfony-djot-demo for a complete example application.
What is Djot?
Djot is a modern light markup language created by John MacFarlane (author of CommonMark/Pandoc). It offers cleaner syntax and more features than Markdown while being easier to parse.
Learn more about Djot syntax at djot.net.
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-27