假設我有一個特定區塊是判斷有沒有登入的 login form
幾乎全站每一頁都有,我可以在各別頁面用 include 的方式使用他嗎?
目前遇到的問題是,如果單獨寫一個 login_form.php
對應 $smarty->display('login_form.html')
在 index.php include 的話似乎是不可行的
這是否代表 login policy 在每一頁都要重下並且重新 assign?
對於不想立即輸出的內容,可以改用$smarty->fetch()來取得輸出字串,然後在適當的地方echo。
fillano 大大,根據您提供的線索,我弄了這樣的架構,您可以幫我看一下有沒有更好得架構嗎
index.php
<pre class="c" name="code">
require_once 'config.php';
require_once 'login.php';
$smarty->display('index.html');
index.html
<pre class="c" name="code">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{$smarty.const.SITE_TITLE}</title>
{$loginArea}
login.php
<pre class="c" name="code">
<?php
$smarty->assign('loginName','test');
$login = $smarty->fetch('login.html');
$smarty->assign('loginArea', $login);
?>
login.html
<pre class="c" name="code">
<?php
$smarty->assign('loginName','test');
$login = $smarty->fetch('login.html');
$smarty->assign('loginArea', $login);
?>
login.html 這樣才對
<pre class="c" name="code">
<div style="width: 100px; height: 100px; border: 1px solid red;">
{$loginName}
</div>
直接使用Smarty的話,這樣應該就可以了。
需要更好的架構的話,那可能要參考一些MVC Framework的作法,依照你要達到的功能設計出架構,不過底層簡單地說也就是這樣做而已。
想下手的話,可以先參考這篇文章:
如何打造 WebMVC Framework – 基礎概念篇
作者應該還會慢慢加入一些細節,只是不知哪年哪月。對這些有興趣的話,不妨到:
http://groups.google.com/group/zf-tw
晃晃,通常隔週有聚會。