私のtwigテンプレートに削除リンクがあり、確認ダイアログを表示するSymfony2の方法があるかどうかを知りたいと思います。SymfonyとTwig:確認ダイアログを表示する方法
これはJQueryでは可能ですが、symfonyには独自の「やり方」があると思います。
ありがとうございます。
私のtwigテンプレートに削除リンクがあり、確認ダイアログを表示するSymfony2の方法があるかどうかを知りたいと思います。SymfonyとTwig:確認ダイアログを表示する方法
これはJQueryでは可能ですが、symfonyには独自の「やり方」があると思います。
ありがとうございます。
ちょうどあなたの削除リンクに
<a href="{{ path('delete_route', {csrf:...}) }}" onclick="return confirm('are u sure?')">delete</a>
ありがとうございました、私はそれを追加しましたが、[OK]または[キャンセル]をクリックすると結果は同じになり、コントローラは削除アクションを処理します。 –
このリンクにバインドされている追加のクリックハンドラーはありますか?キャンセルボタンがクリックされ、 'confirm( '本当ですか?')でfalseが返された場合、ブラウザはページを削除しません。 – Ziumin
実際、削除リンクは画像ボタンに埋め込まれています。私は私の削除ボタンの小枝のコードで私の質問を編集します。 –
をconfirm
javascript関数を使用して、私はこのトピックは少し古いです知っているが、私は、オブジェクトを削除する前に確認メッセージを表示するには、別の方法を使用していました。
私は、javascript以外のソリューションを探している人たちと分かち合うのは面白いと思います。
これはもう少し複雑で、少なくとも上記の解決策よりも長くなっています。
最初に私は私ののcontrolerに
public function confirmAction(Capteur $myobject) {
// check my object exist
if (!$myobject) {
// throw error
} else {
// you can pass information about your object to the confirmation message
$myobjectInfo = array(
'yes' => 'path_if_confirm', // path to the deleteAction, required
'no' => 'path_if_dont_confirm', // path if cancel delete, required
// put any information here. I used type, name and id
// but you can add what you want
'type' => 'mytype',
'id' => $myobject->getId(), // required for deleteAction path
'name' => $myobject->getName()
);
// add informations to session variable
$this->get('session')->set('confirmation',$myobjectInfo);
return $this->redirect($this->generateUrl('confirmation_template_path'));
}
}
public function deleteAction(MyType $myobject) {
if (!$myobject) {
// throw exception
} else {
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$em = $this->getDoctrine()->getManager();
$em->remove($myobject);
$em->flush();
$this->get('session')->getFlashBag()->add('success', 'Nice shot.');
} else {
// you can do something here if someone type the direct delete url.
}
}
return $this->redirect($this->generateUrl('where_you_want_to_go'));
}
をこれらのアクションを追加しますので、オブジェクトの私のリストと私のテンプレートでは、私がconfirmActionに削除ボタンをポイントします。
その後confirmation_template中(または上の親テンプレートlayout.hml.twigで私の場合)私はこの
{% if app.session.get('confirmation') is defined and app.session.get('confirmation') is not null %}
<div>
<p>
put your message here. You can use information passed to the session variable {{ app.session.get('confirmation').type }} {{ app.session.get('confirmation').name }} {{ app.session.get('confirmation').id }} etc..
</p>
<form method="post" action="{{ path(app.session.get('confirmation').yes,{'id':app.session.get('confirmation').id }) }}">
<button type="submit" class="btn red">confirm and delete</button>
<a href="{{ path(app.session.get('confirmation').no) }}" class="btn blue">Cancel</a>
</form>
</div>
# put confirmation variable to null, to disable the message after this page #
{{ app.session.set('confirmation',null) }}
{% endif %}
を追加し、私はのためにメッセージを再利用するためには、私の上位テンプレートでこれらの小枝コードを置きます私が望むどんなオブジェクト。別の種類のオブジェクトを削除したい場合は、セッション変数に渡された情報をカスタムメッセージとパシュに使用します。 直接URLに移動すると、オブジェクトは削除されません。
それを行うのが最善の方法かどうかはわかりません。あなたのアドバイスは高く評価されます。
ありがとうございました。
symfony2にはそんなことはありません。 –
@habeebperwad、ご意見ありがとうございます。 –