2011-01-18 16 views
2

現在、私はgetEmails($ id = NULL)というメソッドを持つモデルを持っています。 $ id == NULLの場合、getEmails()はfetchAll($ select) - > toArray()を使用して電子メールテーブルのすべてのレコードを返します。ビューでは、返された配列が空の配列かどうかを調べるif文があります。そうであれば、表示する電子メールがないことをユーザーに知らせるエラーを表示します。そうでなければ、foreach()ループを通ってすべての電子メールを表示します。データベースでレコードが見つからない場合にエラーを表示する正しい方法

この場合、if文を使用して電子メール配列が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のメールが見つからない場合は例外をスローするのは間違いですか?

私はそうあなたは、ユーザーにそのエラーメッセージを表示するには、Zend FrameworkのフラッシュMessengerを使用することができ

答えて

0

:-)すべてのあなたの助けをありがとう物事の「正しい」方法を学ぶためにしようとしています。あなたが次のことを行うことができ、メッセージを表示するには

$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; ?> 

これは、フラッシュメッセンジャーの使い方の非常に基本的な例ですが、これはあなたのためにあなたを得るでしょう。

EDIT:あなたの質問を読んだ後、私は(私がすぐに持っていなければならない)あなたがモデルからエラー/例外を生成していることを認識しました。コントローラーのヌル戻り値をテストしてそこからメッセージを送信するか、セッションを作成してそこにメッセージを格納してコントローラーがフラッシュメッセンジャーに入れることができます。

関連する問題