2016-05-20 11 views
0

私はページ上にボタンがあり、クリックするとフォーム(タイプ)を含むポップアップが開きます。私はそのフォームをレンダリングすることができました。フォームが送信されると、dbへの追加が完了しますが、新しいウィンドウでフォームテンプレート/ルートにリダイレクトされます。私がしたいことは、ポップアップを閉じることで、別のページへのリダイレクトはありません。fos-restでテンプレートをレンダリングしてポップアップを閉じる

それは角度

function FeedbackController (modalService) { 
    var vm = this; 

    vm.open = open; 

    function open() { 
     modalService.openModal('add_feedback'); 
    } 
} 

からルートを開始します。

add_feedback: 
    path: /feedback 
    defaults: 
     _controller: MainBundle:Api/Feedback:addFeedback 
     template: MainBundle:Modals:feedback.html.twig 
    options: 
     expose: true 

とアクション:

/** 
* @FosRest\View() 
*/ 
public function addFeedbackAction(Request $request) 
{ 
    $view = View::create(); 

    $feedback = new Feedback(); 
    $feedbackService = $this->get('main.feedback.service'); 
    $form = $this->createForm(new FeedbackType(), null, ['action' => 'feedback']); 
    $form->handleRequest($request); 

    if ($form->isValid()) { 
     $formData = $form->getData(); 
     $feedbackService->create($formData, $feedback); 

     return null; 
    } 
    $view 
    ->setData($form) 
    ->setTemplateData($form) 
    ->setTemplate('MainBundle:Modals:feedback.html.twig'); 

    return $view; 
    //  return $this->render('MainBundle:Modals:feedback.html.twig', array(
    //   'form' => $form->createView(), 
    //  )); 
     } 

答えて

0

ですから、Ajaxのクエリを使用して、フォームを投稿する必要があり、応答ステータスを待ちますsmthが間違っていたら、ポップアップを閉じるか、メッセージを表示してください。ここで

は一例です:

angular.module('myApp', []) 
 
    .controller('myCtrl', function($scope, $http) { 
 
    $scope.hello = { 
 
     name: "Boaz" 
 
    }; 
 
    $scope.newName = ""; 
 
    $scope.sendPost = function() { 
 
     var data = $.param({ 
 
     json: JSON.stringify({ 
 
      name: $scope.newName 
 
     }) 
 
     }); 
 
     $http.post("/echo/json/", data).success(function(data, status) { 
 
     $scope.hello = data; 
 
     }) 
 
    } 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app='myApp'> 
 

 
    <div ng-controller="myCtrl"> 
 
    {{hello.name}} 
 

 
    <form ng-submit="sendPost()"> 
 
     <input ng-model="newName" /> 
 
     <button type="submit">Send</button> 
 
    </form> 
 

 
    </div> 
 

 
</body>

+0

あなたのスクリプトが実行されません。 – Matt

関連する問題