php
  • cakephp
  • cakephp-3.0
  • 2015-08-17 75 views 0 likes 
    0

    假設我有一個User模型,並且在我的應用程序的這裏和那裏我需要顯示他的頭像以及他的個人資料的鏈接。實體中的助手

    現在我發現使用虛擬屬性非常有用。所以在我的User實體文件,我不喜歡的東西:

    protected function _getAvatar() 
    { 
        return "<a href='users\profile".$this-id."'><img src='".$this->avatar_url."'></a>"; 
    } 
    

    所以每次我需要顯示在視圖中化身時候我只是寫

    <?= $user->avatar ?> 
    

    (它只是一個semplified例子得到的想法,而不是實際的代碼)

    我的問題是:如何在我的User.php文件中使用Html助手?

    但是又出現了另一個問題:即使上面的代碼非常方便,我認爲它打破了MVC模式。那麼這是獲得我所需要的正確方法嗎?

    回答

    1

    你對有充分的理由持懷疑態度,這實際上並非如此。

    讓實體以某種方式變異數據是一回事,但表現邏輯,不,這實在太多了,助手是用於視圖的!現在,只需使用自定義助手,單元或元素,然後將實體傳遞給它們。

    未來可能有entity presenters可能更適合。

    +0

    感謝@ndm,很高興知道我不是唯一一個試圖將演示邏輯放入實體並期待使用演示者的人。所以我想我的問題的最佳解決方案是使用元素或單元格,但我對性能有疑問:假設我有一個像[this](http://stackoverflow.com/users)這樣的頁面。如果我創建了一個頭像元素來顯示用戶圖像,並且信息不會加載數百次影響性能的.ctp文件? – arilia

    +0

    @arilia那麼,我們可以整天思考這個問題,但我認爲你應該嘗試一下,看看它的表現如何。最後,這也取決於您的應用實際需要處理多少流量。單元和元素儘管是可緩存的(注意兩者都可以嵌套),但可能會非常慢,如果這是一個問題,我建議使用自定義幫助器,或者甚至可以使用緩存代理適用情況。 – ndm

    相關問題