cvs: smarty /docs appendixes.sgml

"Monte Ohrt" <[email protected]>
Newsgroups gmane.comp.php.cvs.smarty
Message-ID <cvsmohrt1078171734@cvsserver>
mohrt		Mon Mar  1 15:08:54 2004 EDT

  Modified files:              
    /smarty/docs	appendixes.sgml 
  Log:
  update componentized template example to something useful
  
  
http://cvs.php.net/diff.php/smarty/docs/appendixes.sgml?r1=1.13&r2=1.14&ty=u
Index: smarty/docs/appendixes.sgml
diff -u smarty/docs/appendixes.sgml:1.13 smarty/docs/appendixes.sgml:1.14
--- smarty/docs/appendixes.sgml:1.13	Wed Jan 14 11:16:24 2004
+++ smarty/docs/appendixes.sgml	Mon Mar  1 15:08:54 2004
@@ -269,10 +269,6 @@
 	<sect1 id="tips.componentized.templates">
 		<title>Componentized Templates</title>
 		<para>
-		This tip is a bit of a hack, but still a neat idea. Use at your own
-		risk. ;-)
-		</para>
-		<para>
         Traditionally, programming templates into your applications goes as
         follows: First, you accumulate your variables within your PHP
         application, (maybe with database queries.) Then, you instantiate your
@@ -284,74 +280,40 @@
         template, and not worry about fetching the data up front?
 		</para>
         <para>
-        You can embed PHP into your templates with the {php}{/php} tags.
-        With this, you can setup self contained templates with their own
-        data structures for assigning their own variables. With the logic
-        embedded like this, you can keep the template &amp; logic together. This
-        way no matter where the template source is coming from, it is always
-        together as one component.
+        You can do this by writing a custom plugin for fetching the content and
+        assigning it to a template variable.
         </para>
 <example>
 <title>componentized template</title>
 <programlisting>
-{* Smarty *}
-
-{php}
-
-	// setup our function for fetching stock data
-	function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) {
-		// put logic here that fetches $ticker_name
-		// and $ticker_price from some resource
-	}
-
-	// call the function
-	fetch_ticker("YHOO",$ticker_name,$ticker_price);
-	
-	// assign template variables
-    $this->assign("ticker_name",$ticker_name);
-    $this->assign("ticker_price",$ticker_price);
-
-{/php}
-
-Stock Name: {$ticker_name} Stock Price: {$ticker_price}</programlisting>
-</example>
-        <para>
-		As of Smarty 1.5.0, there is even a cleaner way. You can include php in
-		your templates with the {include_php ...} tag. This way you can keep
-		your PHP logic separated from the template logic. See the <link
-		linkend="language.function.include.php">include_php</link> function for
-		more information.
-        </para>
-<example>
-<title>componentized template with include_php</title>
-<programlisting>
-load_ticker.php
+function.load_ticker.php
 ---------------
 
 &lt;?php
+function smarty_function_load_ticker($params, &amp;$smarty) {
 	// setup our function for fetching stock data
-	function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) {
-		// put logic here that fetches $ticker_name
-		// and $ticker_price from some resource
+	function fetch_ticker($params['symbol']) {
+		// put logic here that fetches $ticker_info
+		// from some resource
+        return $ticker_info;
 	}
 
 	// call the function
-	fetch_ticker("YHOO",$ticker_name,$ticker_price);
+	$ticker_info = fetch_ticker("YHOO",$ticker_info);
 	
-	// assign template variables
-    $this->assign("ticker_name",$ticker_name);
-    $this->assign("ticker_price",$ticker_price);
+	// assign template variable
+    $smarty->assign($params['assign'],$ticker_info);
+}
 ?&gt;
 
-
 index.tpl
 ---------
 
 {* Smarty *}
 
-{include_php file="load_ticker.php"}
+{load_ticker symbol="YHOO" assign="ticker"}
 
-Stock Name: {$ticker_name} Stock Price: {$ticker_price}</programlisting>
+Stock Name: {$ticker.name} Stock Price: {$ticker.price}</programlisting>
 </example>
 	</sect1>
 	<sect1 id="tips.obfuscating.email">
@@ -400,4 +362,4 @@
 	check the website.
 	</para>
 </chapter>
-</part>
\ No newline at end of file
+</part>

-- 
Smarty CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.