ajax(jqueryを使用)経由でフォームを開き、ページ全体を再読み込みせずに保存したい。私は、ページを編集するためにリダイレクトの代わりにテキスト応答(例えば、 "OK!")を得るために、コードを変更する必要がありますか?Symfony:レコードを追加した後の応答を変更する
これは私のJSです:
$("#newcatlink").click(function() {
$.ajax({
'url': "category/new",
'success': function(data, textStatus, jqXHR) {
$("#mdialog").html(data);
$("#_form_jqhide").hide();
$("#mdialog").dialog({
modal: true,
width: 500,
resizable: false,
buttons: {
Save: function() {
$.ajax({
'type': 'POST',
'url': 'category/create',
'data': $("#categoryform").serialize(),
'success': function(data, textStatus, jqXHR) {
alert(data);
}
});
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
});
});
私はこのようなのactions.class.phpでPROCESSFORMアクションを変更:
...
if ($form->isValid())
{
$Category = $form->save();
if($request->isXmlHttpRequest()) {
return $this->renderText("ok!");
} else {
$this->redirect('category/edit?id='.$Category->getId());
}
}
が、それは何も変更didntの。これを行う方法?
編集8/1/12:
私はblowskiとsakfa答えに応じて私のコードに変更を加えましたが、私は別の問題を取得します。フォームのエラーをキャッチする方法?私はprocessFormにelseを追加し、期待どおりに動作しますが、エラーメッセージ/ code /何かを返すことはできません。エラーが存在するだけです。ここ
コードである:http://pastebin.com/ppbPM88G これは1つの必須フィールド空でフォームを送信した後、サーバ答えは:
{ "haserrors":真、 "エラー":[]}
古いSFバージョンの問題は、(あなたが使用しているバージョンあなたが私に教えていませんでし)とすることができますか? '$ this-> renderText( 'ok!')'を返す直前にdie( 'here') 'ステートメントを入れて、そのブランチに入っていることを確認します。 –
が死んでいる場合は、「ここ」が期待通りに表示されます。ダイがなければ、編集ページにリダイレクトされます。 – WombaT
なぜリダイレクトを継続して実行しているのか考えられません。アクションクラスの他の場所にはリダイレクトはありません。通常このために私は 'if(!$ request-> isXmlHttpRequest()){$ this-> redirect()}'を使い、テキストのレンダリングをパブリックメソッドに入れます。 –