2007年5月15日 星期二

CakePHP使用手冊-Helper

轉貼自 http://www.ezluk.org/

第三節



Javascript



JavaScript helper用於協助開發者透過關鍵的資訊,產生完整格式的JavaScript標籤和資料。

譯註:例如,只需提供edit.js檔名,即可使用link()完成
<script type="text/javascript" src="edit.js"></script>
完整的 HTML 字串。





  • codeBlock


  • string $string




將$string的字串包在JavaScript的<script>標籤內傳回。





  • link


  • string $url




把本機內的JavaScript連結進來使用。$url是JavaScript的檔名(含.js)


譯註:原始碼中是把$url接上一大堆路徑設定後,當成
<script ></script>的src屬性。





  • linkOut


  • string $url




和link()相同,只是這兒的標籤假設$url所參照的script不同在一個網域內。


譯註:原始碼中直接把$url字串當成
<script ></script>的src屬性。




  • escapeScript


  • string $script




把$script中的換行字元,單引號和雙引號脫逸掉。





  • event


  • string $object


  • string $event


  • string $observer


  • boolean $useCapture




在某個元素上附加事件。配合Prototype函式庫使用。





  • cacheEvents






將event()所建立的JavaScript暫存。





  • writeEvents






將cacheEvents()所暫存的事件寫入。





  • includeScript


  • string $script



將函式庫(例如Prototype函式庫)包含進來使用。
$script是指被包含進來的檔名(不含'.js'),如果是空字串,則表示將 WWW_ROOT/js/ 內所有的檔都包含進來使用。


譯註:include的意思其實就是把某個檔案內容原封不動貼上去。





Number



Number helper含有很多好用的函式可用於在view中加入格式化的字串。





  • precision


  • mixed $number


  • int $precision = 3




以$precision設定的精度將$number傳回。





  • toReadableSize


  • int $sizeInBytes




把$sizeInBytes所指的資料容量大小轉換成KB,MB,GB或TB這種人們可接受的單位傳回。




  • toPercentage


  • mixed $number


  • int $precision = 2




把精度為$presision的$number加上百分比符號後的字串傳回。


譯註:toPercentage(1.23456,2)就傳回'1.23%'。





Text



Text Helper協住關發者將完整格式的文字輸出的流覽器中。





  • highlight


  • string $text


  • string $phrase

  • string $highlighter = '<span
    class="highlight">\1</span>'




將$text中所出現的$phrase字串用$highlighter所提供的HTML標籤包起來。





  • stripLinks


  • string $text




將$text中所有的HTML連結(<a href= ...)去除後傳回。





  • autoLinkUrls


  • string $text


  • array $htmlOptions




在$text中找到類似http://或ftp://等字串後,加入(<a href=....)的標籤。


譯註:原文太簡化,這段文字是從原始碼中找到的,由於這函式內部會使用到HTML helper,$htmlOptions的說明可以參考HTML Help。





  • autoLinkEmails


  • string $text


  • array $htmlOptions




把$text字串加上email標籤(<a href="mailto:....)後傳回。


譯註:由於函式內部會使用到HTML helper,$htmlOptions的說明可以參考HTML Help。




  • autoLink


  • string $text


  • array $htmlOptions




把$text內所有URL和email連結轉成HTML標籤傳回。


譯註:由於函式內部會使用到HTML helper,$htmlOptions的說明可以參考HTML Help。





  • truncate


  • string $text


  • int $length


  • string $ending = '...'




將$text的前$length個字接上$ending字串(預設是'...')傳回。





  • excerpt


  • string $text


  • string $phrase


  • int $radius = 100


  • string $ending = '...'




從$text中節錄一小段文字傳回。
程式會在$text中找到$phrase字串,把前$radius到後$radius的字串接上$ending字串後傳回。





  • flay


  • string $text


  • boolean $allowHtml =
    false




將文字以flay格式轉成html,類似Textile或Redcloth,只是語法不同。


譯註:$allowHtml等於false時會把字串中的 '>' 以 '&gt;' 取代, '<' 以 '&lt;' 取代。



Time



Time Helper提供開發者一些函式把Unix的時間與日期字串轉換成看得懂的格式,顯示在流覽器中。



所有函式的$dateString字串,可PHP函式取得,也可由Unix函式取得。





  • fromString


  • string $dateString




將$dateString轉成UNIX時間。傳入的字串可以是UNIX的格式或標準strtotime()傳回的字串。





  • nice


  • string $dateString


  • boolean $return = false




傳回格式很親合的字串。
日期格式為"D, M js Y, H:i",例如 'Mon, Jan 1st 2005, 12:00'。





  • niceShort


  • string $dateString


  • boolean $return = false




傳回的字串格式和nice()一樣,但如果日期是今天,則顯示"Tody, 12:00",若是明天,則顯示"Yesterday, 12:00"。





  • isToday


  • string $dateString




傳回$dateString是否就是今天。





  • daysAsSql


  • string $begin


  • string $end


  • string $fieldName


  • boolean $return = false




傳回用來查詢二個時間點間的資料的SQL字串。





  • dayAsSql


  • string $dateString


  • string $fieldName


  • boolean $return = false




傳回可查詢與$dateString同一天的資料的SQL字串。





  • isThisYear


  • string $dateString


  • boolean $return = false




傳回$dateString是否是今年。





  • wasYesterday


  • string $dateString


  • boolean $return = false




傳回$dateString是否是昨天。





  • isTomorrow


  • string $dateString


  • boolean $return = false




傳回$dateString是否是明天。





  • toUnix


  • string $dateString


  • boolean $return = false




把$dateString字串轉成UNIX的時間。這函式只是把PHP的strtotime()封裝起來而以。



與fromString不同點在於toUnix只能傳入字串,fromString還可以傳入UNIX時間。




  • toAtom


  • string $dateString


  • boolean $return = false




將日期轉為Atom RSS feeds的時間格式。





  • toRSS


  • string $dateString


  • boolean $return = false




將日期轉為 RSS feeds的時間格式。





  • timeAgoInWords


  • string $dateString

  • string $format = 'j/n/y'

  • string $backwards = false

  • string $return = false


  • boolean $return = false




傳回目前時間與$dateString相差的時間或格式化的日期。
$datetime格式必需是像MySQL datetime這種strtotime()看得懂的格式。



譯註:如果相差時間大於一個月,會用"on 2/18/2006"的格式傳回,小於一個月則用"3 weeks, 4 days ago"這種格式傳回。




  • relativeTime


  • string $dateString


  • boolean $return = false




功能和timeAgoInWords()一樣,只是只能使用預設參數。請看timeAgoInWords()說明





  • wasWithinLast


  • string $timeInterval


  • string $dateString


  • boolean $return = false




如果$dateString在$timeInterval的時間內,傳回true,否則傳回false。
$timeInterval要有單位,如'6 hours', '2 days'







第四節


設計自己的Helper



有需要協助產生view程式嗎?如果發現有一小部分的view邏輯不斷的重覆出現,可以設計一個自己的Helper處理這件事。




繼承Helper類別



假設我們要設計一個輸出某種CCS風格的helper。
為了把邏輯裝進Cake既存的Helper結構,你必須建立一個新類別,放在/app/views/helpers目錄裡。
就把我們的Helper叫LinkHelper,實際的php類別看起來像這樣:




/app/views/helpers/link.php



class LinkHelper extends Helper

{

    function makeEdit($title, $url)

    {

        // 建立特殊格式連結的邏輯放這兒...

    }

}



Cake的helper類別內有一些函式可以讓你使用:





  • output


  • string $string


  • boolean $return = false




這函式可以把任何資料傳回view。
AUTO_OUTPUT(請看/app/config/core.php)和$return二個參數決定了傳回資料是要直接輸出到畫面,
還是單純回傳。





  • loadConfig






傳回應用程式目前的核心設定和標籤定義。



讓我們用output()建立標題連結和URL,並將它傳回view。




/app/views/helpers/link.php (加入邏輯)



class LinkHelper extends Helper

{

    function makeEdit($title, $url)

    {

        // 使用helper的output()函式把格式化的資料傳回view

        return $this->output("<div
class=\"editOuter\"><a href=\"$url\"
class=\"edit\">$title</a></div>");

    }

}





呼叫其他的Helper



你可能想用其他既存helper的功能。這時,只要在$helpers 陣列指定需要使用的helper就行了,
使用方法和在controller裡一模一樣。




/app/views/helpers/link.php (使用別的helper)



class LinkHelper extends Helper

{



    var $helpers = array('Html');



    function makeEdit($title, $url)

    {

        // 使用HTML helper輸出格式化資料:

        $link = $this->Html->link($title, $url, array('class' => 'edit'));



        return $this->output("<div class=\"editOuter\">$link</div>");

    }

}





使用自己的Helper



一旦你的helper設計好,並放在/app/views/helpers/目錄後,就可以在controller的$helpers陣列中指定使用了。



class ThingsController

{

    var $helpers = array('Html', 'Link');

}


如果還要使用HTML helper,記得一併放進去。命名規則如下:





  1. LinkHelper = class name





  2. Link = key in helpers array





  3. link.php = name of php file in
    /app/views/helpers.







回饋



請考慮將您的程式回饋回Cake-可以透過我們的Trac系統或email和其中一位開發者連繫,
或者開一個新的CakeForge專案,把你的新helper分享給其他人。



沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~