Package Home

Zend Framework 2 Documentation (Manual)

PHK Home

File: /modules/zendmarkup.renderers.html

Size:16605
Storage flags:no_autoload,compress/gzip (26%)

ZendMarkup Renderers — Zend Framework 2 2.4.2 documentation

ZendMarkup Renderers

ZendMarkup is currently shipped with one renderer, the HTML renderer.

Adding your own markups

By adding your own markups, you can add your own functionality to the ZendMarkup renderers. With the markup structure, you can add about any functionality you want. From simple markups, to complicated markup structures. A simple example for a ‘foo’ markup:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Creates instance of Zend\Markup\Renderer\Html,
// with Zend\Markup\Parser\BbCode as its parser
$bbcode = Zend\Markup\Markup::factory('Bbcode');

// this will create a simple 'foo' markup
// The first parameter defines the markup's name.
// The second parameter takes an integer that defines the markups type.
// The third parameter is an array that defines other things about a
// markup, like the markup's group, and (in this case) a start and end markup.
$bbcode->addMarkup(
    'foo',
    Zend\Markup\Renderer\RendererAbstract::TYPE_REPLACE,
    array(
        'start' => '-bar-',
        'end'   => '-baz-',
        'group' => 'inline'
    )
);

// now, this will output: 'my -bar-markup-baz-'
echo $bbcode->render('my [foo]markup[/foo]');

Please note that creating your own markups only makes sense when your parser also supports it with a markup structure. Currently, only BBCode supports this. Textile doesn’t have support for custom markups.

Some renderers (like the HTML renderer) also have support for a ‘markup’ parameter. This replaces the ‘start’ and ‘end’ parameters, and it renders the markups including some default attributes and the closing markup.

Add a callback markup

By adding a callback markup, you can do a lot more then just a simple replace of the markups. For instance, you can change the contents, use the parameters to influence the output etc.

A callback is a class that implements the Zend\Markup\Renderer\TokenInterface interface. An example of a callback class:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class My_Markup_Renderer_Html_Upper
    implements Zend\Markup\Renderer\TokenConverterInterface
{

    public function convert(Zend\Markup\Token $token, $text)
    {
        return '!up!' . strtoupper($text) . '!up!';
    }

}

Now you can add the ‘upper’ markup, with as callback, an instance of the My_Markup_Renderer_Html_Upper class. A simple example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
// Creates instance of Zend\Markup\Renderer\Html,
// with Zend\Markup\Parser\BbCode as its parser
$bbcode = Zend\Markup\Markup::factory('Bbcode');

// this will create a simple 'foo' markup
// The first parameter defines the markup's name.
// The second parameter takes an integer that defines the markups type.
// The third parameter is an array that defines other things about a
// markup, like the markup's group, and (in this case) a start and end markup.
$bbcode->addMarkup(
    'upper',
    Zend\Markup\Renderer\RendererAbstract::TYPE_CALLBACK,
    array(
        'callback' => new My_Markup_Renderer_Html_Upper(),
        'group'    => 'inline'
    )
);

// now, this will output: 'my !up!MARKUP!up!'
echo $bbcode->render('my [upper]markup[/upper]');

List of markups

List of markups
Sample input (bbcode) Sample output
[b]foo[/b] <strong>foo</strong>
[i]foo[/i] <em>foo</em>
[cite]foo[/cite] <cite>foo</cite>
[del]foo[/del] <del>foo</del>
[ins]foo[/ins] <ins>foo</ins>
[sup]foo[/sup] <sup>foo</sup>
[sub]foo[/sub] <sub>foo</sub>
[span]foo[/span] <span>foo</span>
[acronym title=”PHP Hypertext Preprocessor]PHP[/acronym] <acronym title=”PHP Hypertext Preprocessor”>PHP</acronym>
[url=http://framework.zend.com/]Zend Framework[/url] <a href=”http://framework.zend.com/“>Zend Framework</a>
[h1]foobar[/h1] <h1>foobar</h1>
[img]http://framework.zend.com/images/logo.gif[/img] <img src=”http://framework.zend.com/images/logo.gif” />

Table Of Contents

This Page

Note: You need to stay logged into your GitHub account to contribute to the documentation.

Edit this document

Edit this document

The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.

  1. Login with your GitHub account.
  2. Go to ZendMarkup Renderers on GitHub.
  3. Edit file contents using GitHub's text editor in your web browser
  4. Fill in the Commit message text box at the end of the page telling why you did the changes. Press Propose file change button next to it when done.
  5. On Send a pull request page you don't need to fill in text anymore. Just press Send pull request button.
  6. Your changes are now queued for review under project's Pull requests tab on GitHub.

For more information about the PHK package format: http://phk.tekwire.net