Introduction to Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 96.1% Update 2010-11-28 - Revision 23448 - Version ZF 1.11.x

    46.4. Zend_Markup Renderer

    Zend_Markup wird aktuell mit einem Renderer ausgeliefert, dem HTML Renderer.

    46.4.1. Eigene Markups hinzufügen

    Indem man eigene Merkups hinzufügt, kann man den Zend_Markup Renderern eigene Funktionalitäten hinzufügen. Mit der Markup Struktur kann man jede Funktionalität welche man haben will hinzufügen. Von einfachen Markups bis zu komplizierten Markup Strukturen. Ein einfaches Beispiel für ein 'foo' Markup:

    // Erstellt eine Instanz von Zend_Markup_Renderer_Html,
    // mit Zend_Markup_Parser_BbCode als seinen Parser
    $bbcode Zend_Markup::factory('Bbcode');

    // Dies erstellt ein einfaches 'foo' Markup
    // Der erste Parameter definiert den Namen des Markups
    // Der zweite Parameter nimmt ein Integer welche den Typ des Markups definiert
    // Der dritte Parameter ist ein Array die andere Dinge des Markups definiert
    // wie die Gruppe des Markups, und (in diesem Fall) ein Start und Ende Markup
    $bbcode->addMarkup(
        
    'foo',
        
    Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
        array(
            
    'start' => '-bar-',
            
    'end'   => '-baz-',
            
    'group' => 'inline'
        
    )
    );

    // Jetzt gibt dies folgendes aus: 'my -bar-markup-baz-'
    echo $bbcode->render('my [foo]markup[/foo]');

    Es gilt zu beachten das die Erstellung eigener Markups nur dann Sinn macht wenn der eigene Parser diese auch in einer Markup Struktur unterstützt. Aktuell unterstützt dies nur BBCode. Textile hat keine Unterstützung für eigene Markups.

    Einige Renderer (wie der HTML Renderer) enthalten auch Unterstützung für einen 'markup' Parameter. Dieser ersetzt die 'start' und 'end' Parameter, und er stellt die Markups inklusive einiger Standardattribute und dem schließenden Markup dar.

    46.4.1.1. Ein Callback Markup hinzufügen

    Durch das Hinzufügen eines Callback Markups kann man viel mehr tun als nur das einfache Ersetzen von Markups. Zum Beispiel kann man den Inhalt ändern, die Parameter verwenden um die Ausgabe zu beeinflussen, usw.

    Ein Callback ist eine Klasse welche das Zend_Markup_Renderer_TokenInterface Interface implementiert. Ein Beispiel einer einfachen Callback Klasse:

    class My_Markup_Renderer_Html_Upper
        
    implements Zend_Markup_Renderer_TokenConverterInterface
    {

        public function 
    convert(Zend_Markup_Token $token$text)
        {
            return 
    '!up!' strtoupper($text) . '!up!';
        }

    }

    Jetzt kann man das 'upper' Markup, mit einem Callback einer Instanz der Klasse My_Markup_Renderer_Html_Upper hinzufügen. Ein einfaches Beispiel:

    // Erstellt eine Instanz von Zend_Markup_Renderer_Html,
    // mit Zend_Markup_Parser_BbCode als seinen Parser
    $bbcode Zend_Markup::factory('Bbcode');

    // Das erstellt ein einfaches 'foo' Markup
    // Der erste Parameter definiert den Namen des Markups
    // Der zweite Parameter nimmt ein Integer welches den Markuptyp definiert
    // Der dritte Parameter ist ein Array welches andere Dinge über ein Markup
    // definiert, wie die Gruppe des Markups und (in diesem Fall) ein Start und Ende
    // Markup
    $bbcode->addMarkup(
        
    'upper',
        
    Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
        array(
            
    'callback' => new My_Markup_Renderer_Html_Upper(),
            
    'group'    => 'inline'
        
    )
    );

    // Jetzt wird die folgende Ausgabe erstellt: 'my !up!MARKUP!up!'
    echo $bbcode->render('my [upper]markup[/upper]');

    46.4.2. Liste der Markups

    Table 46.2. Liste der Markups

    Beispiel Eingabe (BBCode) Beispiel Ausgabe
    [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" />

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...