2011-01-18 36 views
2

目前,我有一個名爲getEmails($ id = NULL)的模型。 如果$ id == NULL getEmails()使用fetchAll($ select) - > toArray()返回電子郵件表中的所有記錄。在視圖中,我有一個if語句來檢查返回的數組是否是一個空數組。如果是,它會顯示一個錯誤,讓用戶知道沒有電子郵件要顯示,否則它會通過foreach()循環顯示所有電子郵件。在數據庫中找不到記錄時顯示錯誤的正確方法

在這種情況下,是不是正確的被使用的,如果檢查語句如果電子郵件陣列emapty?或者我應該以另一種方式去做嗎? !

如果$ ID = NULL getEmails使用下面的代碼返回一條記錄:

 $select->where('id=?',$id); 
     $row = $this->fetchRow($select) 
     if(!$row) throw new Exception('Could not find email with ID '.$id); 
     else return $row->toArray(); 

正如你所看到的,它拋出一個異常,如果記錄找不到。

我覺得有必要的時候給用戶顯示錯誤的方式更加統一。

是否正確扔在事件的異常ID爲$ ID電子郵件不能被發現的?

我想學做事情的「正確」的方式,以便感謝您對您的幫助:-)

回答

0

你可以使用Zend框架的Flash Messenger來顯示錯誤信息給用戶。

在你可以使用下面的代碼控制器:

$this->_helper->flashMessenger->addMessage("Could not find email with ID $id"); 

要顯示的信息,你可以做到以下幾點:

在控制器,你必須恢復的信息:

$this->view->messages = $this->_helper->flashMessenger->getMessages(); 

在視圖腳本要顯示他們:

<?php if (count($this->messages)) : ?> 
<ul id="messages"> 
<?php foreach ($this->messages as $message) : ?> 
    <li><?php echo $this->escape($message); ?></li> 
<?php endforeach; ?> 
</div> 
<?php endif; ?> 

這是一個如何使用flash messenger的非常基本的例子,但是這肯定會讓你在路上。

編輯:重新閱讀你的問題,我意識到以後(我應該立刻有)你產生從模型中的錯誤/異常。您可以測試控制器中的空返回值並從那裏發送消息,或者您可以創建一個會話並將消息存儲在那裏以供控制器拾取並放入Flash Messenger。

相關問題