2014-01-31 35 views
2

我還沒有看到任何關於通過JSON發送請求以使用FOSUserBundle的函數的任何問題,所以我發佈了這個問題。我有一個主要爲移動使用而設計的Symfony2項目(也是AJAX)。我正在使用FOSRestBundle和FOSUserBundle,它們在窗體界面中運行良好。但是,我希望能夠註冊一個用戶,例如通過發佈JSON數據來註冊,登錄,查看配置文件等。這怎麼做?甚至可以將JSON數據發送到FOSUserBundle?如果可能的話,我會很高興,如果你可以給將JSON數據發佈到FOSUserBundle註冊,登錄,配置文件等

樣品FOSUserBundle登錄表單如何註冊或進行個人資料的例子,等:

<form action="/projects/symfony/web/app_dev.php/login_check" method="post"> 
    <input type="hidden" name="_csrf_token" value="1cdb2c8fa2fb9a52905ddebff3185ac1a3ad708d" /> 

<label for="username">Username:</label> 
<input type="text" id="username" name="_username" value="" required="required" /> 

<label for="password">Password:</label> 
<input type="password" id="password" name="_password" required="required" /> 

<input type="checkbox" id="remember_me" name="_remember_me" value="on" /> 
<label for="remember_me">Remember me</label> 

<input type="submit" id="_submit" name="_submit" value="Login" /> 
</form> 
     </div> 
    </body> 
</html> 

回答

-1

這裏是一個JSON的例子 - 它會檢測是否用戶是否登錄 「code」是動作返回的響應, 「imageHandler()」是在這種情況下使用js觸發的函數,例如使用間隔或按某個鍵。當然,不需要參數。 send函數用於向控制器發送變量,在這種情況下,im使用它發送帶有參數(myImageId)中給出的值的「imageId」變量,與myToDo的計數相同。

的Javascript(這是樹枝模板)

<script language="JavaScript" type="text/javascript"> 
     function imageHandler(myToDo,myimageId) 
     { 
     var xml = (window.XMLHttpRequest) ? 
      new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 

     xml.open("GET", "{{path('imageHandler')}}", true); 
     xml.setRequestHeader("Content-type", "application/json"); 

     xml.onreadystatechange = function() 
     { 
      var serverResponse = JSON.parse(xml.responseText); 

      if(serverResponse.code == 100 && serverResponse.success) 
       { 
         //success 
       } 
      else if(serverResponse.code == 200) 
       { 
        //not logged in 

       } 

     } 
      xml.send({imageId: myimageId, toDo: myToDo}); 
    } 
    </script> 


    /* This is the controller, the javascript knows which controller to call by using the "name annotation" 
    */ 

     /** 
     * @Route(name="imageHandler") 
     */ 
     public function imageHandlerAjaxAction(Request $request) 
     { 
      //If user is not logged in.. 
      if (false === $this->get('security.context')->isGranted('ROLE_USER')) 
      { 
       //return this variables (your choice of course, format: variable=>value) 
       $response = array("code"=>200,"success"=>false); 

       return new Response(json_encode($response)); 
      } 
     } 
+0

比較遺憾的是可怕的格式化我是一個新手 –

+0

另外,如果你想我可以使用JQuery –

+0

感謝試圖幫助環聊給你同樣的JS代碼。但是,我試圖做的是通過一個示例來了解如何在JSON中發佈數據以在Symfony中創建用戶,其中用戶表由FOSUserBundle管理。例如,我知道登錄表單如上所述,現在假設我想註冊並且路由是/ register,那麼如何向該路由發送JSON以註冊指定的用戶? –