1

doctrine リポジトリ クラスを使用して Zend アプリケーションを構築し、データを更新、削除、および DB に挿入しています。これらのリポジトリはコントローラ アクションから呼び出され、本来の目的を正確に実行します。ただし、アプリケーションにいくつかの確認ダイアログを追加したいので、たとえば、ユーザーがアイテムを編集または削除したい場合は、最初に編集または削除の確認ダイアログを開く必要があり、データは状況に応じて編集または削除されます。ユーザーが選択するもの。ユーザーが zend フォームの送信ボタンをクリックした後に、スタッフ メンバーの詳細を更新するためのアクション コードの例を次に示します。

public function updatestaffAction()
{        
    if ($this->getRequest()->isPost()) {
        if ($form->isValid($this->getRequest()->getPost())) {
            $values = $form->getValues();
            $user = $this->entityManager->find('\PTS\Entity\Staff', $values['staff_number']);
            $staffValues = array('staff_number' =>  $values['staff_number'],
                                 'title'        =>  $values['title'],
                                 'first_name'   =>  $values['first_name'],
                                 'last_name'    =>  $values['last_name'],
                                 'telephone'    =>  $values['telephone'],
                                 'cellphone'    =>  $values['cellphone'],
                                 'fax'          =>  $values['fax'],
                                 'email'        =>  $values['email'],
                                 'job_title'    =>  $values['job_title']);

            $this->staffRepository->saveStaff($staffValues);
            $this->entityManager->flush();
        }
    }

スタッフ リポジトリの saveStaff メソッドは、単純に新しい Staff オブジェクトを作成し、スタッフ メンバーが存在しない場合はそのオブジェクトを保持します。または、上記の更新コードの場合のように、既存のスタッフ メンバーの場合は新しいデータをマージします。

私の質問は、ユーザーが確認ダイアログで [はい] ボタンをクリックした場合にのみデータを保存するようにアクションを変更するにはどうすればよいかということです。ところで、ダイアログは JQuery または Dojo ダイアログ ボックスのいずれかになります。

4

2 に答える 2

2

フォームの送信ボタンを作成するときに、js コードを設定します。

$submit = new Zend_Form_Element_Submit('delete');

$submit->setAttrib(
'onclick', 
'if (confirm("Are you sure?")) { document.form.submit(); } return false;'
);

または、リンクにダイアログボックスを設定する場合 (送信フォームがない場合):

onclick="if (confirm('Are you sure?')) { document.location = this.href; } return false;"

showDialog のコード:

$(function() {
    $( "#dialog:ui-dialog" ).dialog( "destroy" );

    $( "#dialog-confirm" ).dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            "Are you sure": function() {
                                    // PUT your code for OK button, for eg.
                                    document.form.submit();
                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
});`
于 2012-09-03T12:47:27.667 に答える
0

Thx、私はこのように2番目のオプションを使用しました:

<a href="<?=$this->url('skill', array('action'=>'delete', 'id' => $skill->getId()))?>" onclick="if (confirm('Are you sure?')) { document.location = this.href; } return false;">Delete</a>

そしてそれはうまくいきました:)

于 2013-07-31T14:22:26.863 に答える