2010-10-25 41 views
4

我有一個名爲Emails的模型,我已經爲此構建了很多功能,但是現在我已經實際上在電子郵件控制器中發送電子郵件並且遇到了問題。CakePHP,電子郵件模型和電子郵件組件。我做了一些愚蠢的事情

電子郵件組件與模型衝突,它們都以$ this-> Email引用。

我的問題是我如何重命名組件(回去和改變模型將是很多工作)。

P.S.我習慣了鐵軌,所以我認爲它會被稱爲通知者。

回答

5

您只需重命名EmailComponent:

/controllers/components/email_handler.php:

App::import('Component', 'Email'); 

class EmailHandlerComponent extends EmailComponent { } 

控制器:

public $components = array('EmailHandler'); 

public function foo() { 
    $this->EmailHandler->... 
} 
+0

輝煌,有bicky。 – Smickie 2010-10-26 08:44:54

+1

如果Smickie發放了Bickies,我不得不接受這個。 – JAL 2010-10-26 19:00:13

0

我經歷了Controller這個類的API,我敢肯定,你的命名衝突並沒有一個簡單的解決方法。儘管它可能是單調乏味且費時的,但您可能更願意咬緊牙關並重新命名模型。如果沒有其他的事情,這是更可維護和更強大的方法,這樣做可能會付出十倍的回報。

0

使用IDE(例如NetBeans)可以使您的生活變得更加輕鬆。它具有重構/重命名功能,甚至可以嘗試重命名引用其他文件。

搜索/ Repalce也可能作爲最後的手段來得心應手。

作爲一個程序員,從來沒有手動重命名;)

1

我可能只是使用sed。確保之後的最新版本是安全的VCS,像

sed 's/$this->Email/$this->Notification/' -i *php 

在相關的目錄執行應該做的伎倆的命令。我猜你可能還必須執行alter/modify table語句來重命名錶格(我不確定Cake是如何處理的,因爲我之前沒有使用它)。