Skip to content

FriendsOfREDAXO/forhtml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FORHtml

PHP-HTML-Generator und Fragmentsammlung für REDAXO cms

Einfache Fragmente zum sofortigen Einsatz.

Geplant:

  • Fragmente für UiKit
  • Fragmente für Bootstrap
  • Fragmente für Tailwind

Beispiel HTML erstellen

$medium = FORHtml::createElement('div')
          ->addClass('border big')
             ->addElement('img')
                ->addClass('uk-width-1-1')
                 ->set('alt', 'Bild zum' . $ziel->title)
                 ->set('uk-tooltip', '')
                 ->mmfile('mediamanager_type', 'image.jpg'); 
echo $medium; 

Beispiel Uikit-Cards fragment in Section und Container aus YForm

$tableUrlaubsziele = rex_yform_manager_table::get('rex_urlaubsziele');
$urlaubsziele = $tableUrlaubsziele->query()->find();
$cards = [];

foreach ($urlaubsziele as $ziel) {
    $mediaList = isset($ziel->media) ? array_filter(explode(",", $ziel->media)) : [];
    $media = '';

    if (!empty($mediaList)) {
        $media = FORHtml::createElement('img')
            ->addClass('uk-width-1-1')
            ->set('alt', 'Bild zum ' . $ziel->title)
            ->set('title', 'Bild zum ' . $ziel->title)
            ->set('uk-tooltip', '')
            ->mmfile('card_image', $mediaList[0])
            ->toString();
    }

    $fragmentVars = [
        'help' => false,
        'media' => $media,
        'media_bottom' => !empty($media),
        'main_attributes' => ['class' => 'uk-card-default'],
        'title' => $ziel->title,
        'body' => $ziel->infotext,
    ];

    $cards[] = FORHtml::createElement('div')
        ->parseFragment('/uk3/card.php', $fragmentVars)
        ->addClass('wrapper uk-background-secondary');
}

if ($cards) {
    $outputCards = FORHtml::createElement('div')
        ->text(implode('', $cards))
        ->addClass('uk-child-width-1-3@m uk-grid-match')
        ->set('uk-grid', '');
    
    $output = FORHtml::createElement('div')
        ->addClass('uk-section uk-preserve-color uk-padding-large')
        ->addElement('div')
        ->addClass('uk-container uk-container-large')
        ->body($outputCards);

    echo $output;
}

based on: PHP HTML GENERATOR

Create HTML tags and render them efficiently.

by: https://github.com/Airmanbzh/

Overview

return FORHtml::createElement();
// returns an empty HtmlTag Container
return FORHtml::createElement('a');
// returns an HtmlTag containing a 'a' tag

Why you should use it

  • it always generates valid HTML and XHTML code
  • it makes templates cleaner
  • it's easy to use and fast to execute

Render tags

echo(FORHtml::createElement('a'));

or

$tag = FORHtml::createElement('a')
echo( $tag );

Simple tags

echo FORHtml::createElement('div');
<div></div>
echo(FORHtml::createElement('p')->text('some content'));
<p>some content</p>

Structured tags

echo(FORHtml::createElement('div')->addElement('a')->text('a text'));
<div><a>a text</a></div>
$container = FORHtml::createElement('div');
$container->addElement('p')->text('a text');
$container->addElement('a')->text('a link');
<div><p>a text</p><a>a link</a></div>

Attributes

Classics attributes (method : 'set')

$tag = FORHtml::createElement('a')
    ->set('href','./sample.php')
    ->set('id','myID')
    ->text('my link');
echo( $tag );
<a href='./sample.php' id='myID'>my link</a>

Shortcut to set an ID attribute (method : 'id')

$tag = FORHtml::createElement('div')
    ->id('myID');
echo( $tag );
<div id='myID'>my link</div>

Class management (method : 'addClass'/'removeClass')

$tag = FORHtml::createElement('div')
    ->addClass('oneClass')
    ->text('my content')
echo( $tag );
<div class="oneClass">my content</div>
$tag = FORHtml::createElement('div')
    ->addClass('aClass')
    ->addClass('anothereClass')
    ->text('my content')
echo( $tag );
<div class="aClass anothereClass">my content</div>
$tag = FORHtml::createElement('div')
    ->addClass('firstClass')
    ->addClass('secondClass')
    ->text('my content')
    ->removeClass('firstClass');
echo( $tag );
<div class="secondClass">my content</div>

More

Text and content are generated according to the order of addition

$tag = FORHtml::createElement('p')
    ->text('a text')
    ->addElement('a')
    ->text('a link');
<p>ma text<a>a link</a></p>

To generate content before text, 2 solutions :

$tag = FORHtml::createElement('p')
    ->addElement('a')
    ->text('a link')
    ->getParent()
    ->text('a text');

or

$tag = FORHtml::createElement('p');
$tag->addElement('a')->text('a link');
$tag->text('a text');
<p><a>a link</a>a text</p>

About

HTML-Builder für REDAXO

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages