sandrokeil/html-element

Zend Framework view helper plugin to use html tags like objects and to render them.

2.0.0 2017-08-04 18:37 UTC

This package is auto-updated.

Last update: 2024-11-28 22:51:03 UTC


README

You want HTML tags as objects?

You want surefire generated HTML tags and HTML attributes?

You want to generate HTML tags on the fly?

This module comes to the rescue!

Build Status Scrutinizer Code Quality Coverage Status HHVM Status SensioLabsInsight Latest Stable Version Dependency Status Total Downloads License

Zend Framework view helper plugin for generating HTML tags. Use HTML tags as objects and manipulate HTML attributes and values.

  • Well tested. Besides unit tests and continuous integration/inspection this solution is also ready for production use.
  • Great foundations. Based on Zend Framework and interop-config
  • Every change is tracked. Want to know whats new? Take a look at CHANGELOG.md
  • Listen to your ideas. Have a great idea? Bring your tested pull request or open a new issue. See CONTRIBUTING.md

Installation

Installation of this module uses Composer. For Composer documentation, please refer to getcomposer.org.

Put the following into your composer.json

{
    "require": {
        "sandrokeil/html-element": "^2.0"
    }
}

Please register the HtmlElement view helper to your Zend\View plugin manager. You can use the Sake\HtmlElement\Service\HtmlElementFactory factory if you install interop-config.

return [
   'view_helpers' => [
        'factories' => [
            \Sake\HtmlElement\View\Helper\HtmlElement::class => \Sake\HtmlElement\Service\HtmlElementFactory::class,
        ],
    ],
];

Documentation

The usage is easy. Here is an example how to use the view helper

<?php

// assume we are in a template
echo $this->html('div', 'my content', array('id' => 'content', 'class' => 'box shadow'));

// or
$div = $this->html('div');
echo $div->setText('my content')
    ->setAttributes(array('id' => 'content', 'class' => 'box shadow'));

// to render HTML you can use
echo $div->enableHtml(true)
    ->setText(
        $this->html('p')->setText('Hello World!')->appendClass('welcome');
    );

// or
echo $this->html(
    'div',
    $this->html('p')->setText('Hello World!')->appendClass('welcome'),
    array('id' => 'content', 'class' => 'box shadow'),
    true
);

Performance tweaks

The default behaviour of HtmlElement is maximum security. But if you have thousands of HTML tags it could be slow. If your HTML attributes are not from user input, you can disable escaping of HTML attributes to increase performance. You can also disable escaping of text to unleash the beast. ;-) This is simply done by adding the following lines to your config file, but keep security in mind.

<?php

return array(
    'sake_htmlelement' => array(
        'view_helper' => array(
            'default' => array(
                'escapeHtmlAttribute' => false,
                'escapeText' => false,
            ),
        ),
    ),
    // other module config stuff
);