php學習日記4(關於php中的$this->assign(); 與 $this->display();)

來源:互聯網
上載者:User

標籤:thinkphp   pop   項目   gbk   解決   edit   play   data-   nts   

$this->assign(); 把數組打出來。

$this->display(‘index.html‘);把打出來的資料放在index.html這個模板上

 

Display用法:

 

$this->display();

就可以輸出模板,根據前面的模板定義規則,因為系統會按照預設規則自動定位模板檔案,所以通常display方法無需帶任何參數即可輸出對應的模板,這是模板輸出的最簡單的用法。
事情總有特例,或者根本不需要按模組進行分目錄存放,不過display方法總是能夠幫你解決問題。


Display方法提供了幾種規則讓你可以隨心所欲的輸出需要的模板,無論你的模板檔案在什麼位置。


下面來看具體的用法:

 

一、調用當前模組的其他動作模板


格式:display(‘操作名‘)
例如,假設當前操作是User模組下面的read操作,我們需要調用User模組的edit操作模版,使用:
$this->display(‘edit‘); 
不需要寫模板檔案的路徑和尾碼。


二、調用其他模組的操作模板


格式:display(‘模組名:操作名‘)
例如,當前是User模組,我們需要調用Member模組的read操作模版 ,使用:
$this->display(‘Member:read‘); 
這種方式也不需要寫模板檔案的路徑和尾碼,嚴格來說,這裡面的模組名和操作名並不一定需要有對應的模組或者操作,只是一個目錄名稱和檔案名稱而已,例如,你的項目裡面可能根本沒有Public模組,更沒有Public模組的menu操作,但是一樣可以使用
$this->display(‘Public:menu‘); 
輸出這個模板檔案。理解了這個,模板輸出就清晰了。

 

三、調用其他主題的操作模板


格式:display(‘主題名:模組名:操作名‘)
例如我們需要 調用Xp主題的User模組的edit操作模版,使用:
$this->display(‘Xp:User:edit‘); 
這種方式需要指定模組和操作名


四、直接全路徑輸出模板


格式:display(‘模板檔案名稱‘)
例如,我們直接輸出當前的Public目錄下面的menu.html模板檔案,使用: 
$this->display(‘./Public/menu.html‘);
這種方式需要指定模板路徑和尾碼,這裡的Public目錄是位於當前項目入口檔案位置下面。如果是其他的尾碼檔案,也支援直接輸出,例如:
$this->display(‘./Public/menu.tpl‘);
只要./Public/menu.tpl是一個實際存在的模板檔案。如果使用的是相對路徑的話,要注意當前位置是相對於項目的入口檔案,而不是模板目錄。


五、直接解析內容


Action類的display方法如果傳入第四個參數,表示不讀模數板檔案而是直接解析內容。例如:
$this->assign(‘foo‘,‘ThinkPHP‘); 
$this->show(‘Hello, {$foo}!‘);

會在頁面輸出: Hello,ThinkPHP! 
直接輸出的內容仍然支援模板布局功能。
show方法也可以支援指定編碼和輸出格式,例如:
$this->show($content, ‘utf-8‘, ‘text/xml‘); 


六、事實上,display方法還有其他的參數和用法。


有時候某個模板頁面我們需要輸出指定的編碼,而不是預設的編碼,可以使用:
$this->display(‘Member:read‘, ‘gbk‘); 


或者輸出的模板檔案不是text/html格式的,而是XML格式的,可以用:
$this->display(‘Member:read‘, ‘utf-8‘, ‘text/xml‘); 


如果你的網站輸出編碼不是預設的編碼,可以使用:
‘DEFAULT_CHARSET‘=> ‘gbk‘ 


如果要輸出XML格式的,可以用:
‘TMPL_CONTENT_TYPE‘=> ‘text/xml‘ 

 

Assign用法:

 

thinkphp 在 Action 類裡面使用 assign 方法對模板變數進行賦值;

所以assign(‘row‘,$row)中第一個參數‘row’表示在模版取值用的變數名,第二個參數是row變數的值。

樣本如下:

 

 

[html] view plain copy  print?
    1. <?php  
    2. $wish=‘測試‘;  
    3. $this->assign(‘row‘,$row);  
    4. ?>  
    5. 模版取值樣本:  
    6. <html>  
    7. <head>  
    8. <title>模版取值樣本</title>  
    9. </head>  
    10. <body>  
    11.   
    12. <p><{$row}></p>  
    13.   
    14. </body>  
    15. </html>  

php學習日記4(關於php中的$this->assign(); 與 $this->display();)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.