我正在关注本教程http://welcometothebundle.com/web-api-rest-with-symfony2-the-best-way-the-post-method/,但我在angularjs中有一个客户端,在symfony上有一个rest API。
我的问题是我仍然不知道如何将我在angularjs中的表格中的数据发送到symfony2的控制器,然后发送到数据库Mysql。
更新: 我知道如何在客户端控制器中静态地将数据添加到数据库,但是如何使用来自angularjs形式的值来执行此操作
public function insertAction()
{
$client = new Client();
$client->setName('cccccccc');
$client->setAdress('ffffffff');
$client->setCivilit('sssssssss');
$em = $this->getDoctrine()->getManager();
$em->persist($client);
$em->flush();
return new Response('Id du client créé : '.$client->getId());
这是我定义控制器的app.js:
.controller('PostsCtrlAjax1', ['$scope', '$http' ,function($scope,$http) {
$http({method: 'POST', url: 'http://localhost/operation/web/app_dev.php/apiclient/insertcl.json'})
.success(function(data){
$scope.posts = data; // response data
}).error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.log("data error ...");
});
}]);
当我运行我的客户端angularjs时,静态数据将存储在数据库中 请任何想法,谢谢你的帮助。
答案 0 :(得分:1)
因此,要将来自angularJS客户端的数据存储到symfony2服务器,您必须执行以下操作:
安装一个简单的侦听器来处理Symfony中的json请求
qandidate-labs/symfony-json-request-transformer
客户表格(示例)
<form ng-submit="submitForm()">
<input ng-model="postData.name"/>
<input ng-model="postData.address"/>
<input ng-model="postData.civility"/>
</form>
提交表单操作(客户端)
$scope.postData = {};
$scope.submitForm = function(){
$http.post('http://localhost/operation/web/app_dev.php/apiclient/postRoute', $scope.postData);
.success(function(data){
$scope.posts = data; // response data, not get data from DB.
}).error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.log("data error ...");
});
};
商店行为(服务器)
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
//...
public function insertAction()
{
$request = new Request();
$request = $request->createFromGlobals();
$client = new Client();
$client->setName($request->request->get('name'));
$client->setAdress($request->request->get('address'));
$client->setCivilit($request->request->get('civility'));
$em = $this->getDoctrine()->getManager();
$em->persist($client);
$em->flush();
return new JsonResponse('Id du client créé : '.$client->getId());
}
如果要为重载范围变量返回数据,请将其添加到方法中:
//...
$clients = $em->getRepository('YourBundle:Client')->findAll();
//...
并将您的回报更改为:
//...
return new JsonResponse($clients);
然后,返回的响应将包含您的数据,$ scope.posts将使用新的注册数据进行刷新。
答案 1 :(得分:1)
您可以使用:
$info = $request->getContent();
$data = json_decode($info,true);
然后使用:
$client->setName($data['name']);