例外によってスローされる単純な例外メッセージを zend 形式で表示したかったのです。データベースに重複レコードが存在するかどうかを確認し、終了した場合は、その名前のレコードがデータベースに既に存在するというエラーをスローします。これは、add.phtml ファイルのレコード名テキストフィールドの直後に表示したかったのです。
これが私がやろうとしている方法です:
私のコントローラーで:
public function addAction()
{
try {
$records->validateDuplicateRecords($recordTitle);
if ($form->isValid()) {
//doing all the stuff like saving data to database
}
} catch (\Exception $e) {
echo $e->getMessage(); //Not sure with this part
}
}
そして、重複レコードをチェックしているクラス:
records.php
public function validateDuplicateRecords($recordTitle)
{
//fetching all titles from database
//comparing with $recordTitle using foreach and if
//all these here in the loop works, I am giving the skeleton of my code
foreach($records as $record)
{
if($record == $recordTitle) {
throw new \Exception("Record with title '$recordTitle' already exists");
}
return true;
}
}
これが基本的に私がやっている方法です。このtryとcatchが純粋なphpのものでどのように機能するかは知っていますが、Zend Framework 2とzendフォームで例外を使用する方法はわかりません. 誰かがこれに対する解決策を持っている場合は、それを共有できれば幸いです。
PS私はアルバムモジュールに従ったので、基本的に私の構造は公式モジュールとほぼ同じです
編集: add.phtml が追加されました
add.phtml
<?php
$title = "Add New Record Title";
$this->headTitle($title);
?>
<h2><?php echo $this->escapeHtml($title); ?></h2>
<?php
$form = $this->form;
$form->setAttribute("action", $this->url("addRecordTitle", array('controller' => "album", 'action' => "add")));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('recordTitle'));
echo $this->formInput($form->get('submit'));
echo $this->form()->closeTag($form);
?>