Get Smarty

Donate

Donate Bitcoin Bitcoin
Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Find Wedding Dresses Online at Canada from Ca-dresses.com

Find your local domestic cleaner

Brautkleider auf Topwedding.de

Best Wedding Dresses Australia at AuBridalDresses.com

Find free files to download on allwhatyouwant.net

Looking For Affordable Wedding Dresses 2015 at Best Prices On TDBridal.com

Advertisement

Chapter 15. Advanced Features

Objekte

Smarty erlaubt es, auf PHP-Objekte durch das Template zuzugreifen. Dafür gibt es zwei Wege. Der erste ist, Objekte zu registrieren und wie auf eine eigene Funktion zuzugreifen. Der andere Weg ist, das Objekt dem Template mit assign() zuzuweisen und darauf wie auf andere Variablen zuzugreifen. Die erste Methode hat eine nettere Template Syntax und ist sicherer da der Zugriff auf ein registriertes Objekt mit Sicherheitseinstellungen kontrolliert werden kann. Der Nachteil ist, dass über registrierte Objekte nicht in einer Schlaufe gelaufen werden kann und, dass es nicht möglich ist, Arrays registrierten Objekten anzulegen. Welchen Weg Sie einschlagen wird von Ihren Bedürfnissen definiert, die erste Methode ist jedoch zu bevorzugen.

Wenn die Sicherheitsfunktionen eingeschaltet sind, können keine private Methoden (solche die einen '_'-Prefix tragen) aufgerufen werden. Wenn eine Methode und eine Eigeschaft mit dem gleichen Namen existieren wird die Methode verwendet.

Sie können den Zugriff auf Methoden und Eigenschaften einschränken indem Sie sie als Array als dritten Registrationsparameter übergeben.

Normalerweise werden Parameter welche einem Objekt via Template übergeben werden genau so übergeben wie dies bei normalen eigenen Funktionen der Fall ist. Das erste Objekt ist ein assoziatives Array und das zweite das Smarty Objekt selbst. Wenn Sie die Parameter einzeln erhalten möchten können Sie den vierten Parameter auf false setzen.

Der optionale fünfte Parameter hat nur einen Effekt wenn format = true ist und eine Liste von Methoden enthält die als Block verarbeitet werden sollen. Das bedeutet, dass solche Methoden ein schliessendes Tag im Template enthalten müssen ({foobar->meth2}...{/foobar->meth2}) und die Parameter zu den Funktionen die selbe Syntax haben wie block-function-plugins: sie erhalten also die 4 Parameter $params, $content, &$smarty und &$repeat, und verhalten sich auch sonst wie block-function-plugins.

Example 15.1. registierte oder zugewiesene Objekte verwenden


<?php
// Das Objekt

class My_Object {
    function meth1($params, &$smarty_obj) {
        return "meine meth1";
    }
}

$myobj = new My_Object;
// Objekt registrieren (referenz)
$smarty->register_object("foobar",$myobj);
// Zugriff auf Methoden und Eigeschaften einschränken
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// wenn wir das traditionelle Parameterformat verwenden wollen, übergeben wir false für den Parameter format
$smarty->register_object("foobar",$myobj,null,false);

// Objekte zuweisen (auch via Referenz möglich)
$smarty->assign_by_ref("myobj", $myobj);

$smarty->display('index.tpl');
?>

  

Und hier das dazugehörige index.tpl:


{* Zugriff auf ein registriertes objekt *}
{foobar->meth1 p1="foo" p2=$bar}

{* Ausgabe zuweisen *}
{foobar->meth1 p1="foo" p2=$bar assign="output"}
ausgabe war: {$output}

{* auf unser zugewiesenes Objekt zugreifen *}
{$myobj->meth1("foo",$bar)}

  

Siehe auch register_object() und assign()

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 9 plus 17? (Are you human?)

Advertisement

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
First Click Internet Marketing @fcinternetmarketing.com
Credit Card Processing Company