使用 Rest POST 将数据从 angularjs 表单发送到 symfony2
send data from angularjs form to symfony2 with Rest POST
我正在学习本教程 http://welcometothebundle.com/web-api-rest-with-symfony2-the-best-way-the-post-method/,但我在 angularjs 有一个客户端,其余 API 使用 symfony。
我的问题是我仍然不知道如何将数据从 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时,静态数据将存储在数据库中
请有任何想法并感谢您的帮助。
因此,要将数据从 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());
}
如果您想要 return 重新加载范围变量的数据,请将其添加到您的方法中:
//...
$clients = $em->getRepository('YourBundle:Client')->findAll();
//...
并将您的 return 更改为:
//...
return new JsonResponse($clients);
然后,returned 响应将包含您的数据,并且 $scope.posts 将使用新的注册数据刷新。
你可以使用这个:
$info = $request->getContent();
$data = json_decode($info,true);
然后使用:
$client->setName($data['name']);
我正在学习本教程 http://welcometothebundle.com/web-api-rest-with-symfony2-the-best-way-the-post-method/,但我在 angularjs 有一个客户端,其余 API 使用 symfony。
我的问题是我仍然不知道如何将数据从 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时,静态数据将存储在数据库中 请有任何想法并感谢您的帮助。
因此,要将数据从 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());
}
如果您想要 return 重新加载范围变量的数据,请将其添加到您的方法中:
//...
$clients = $em->getRepository('YourBundle:Client')->findAll();
//...
并将您的 return 更改为:
//...
return new JsonResponse($clients);
然后,returned 响应将包含您的数据,并且 $scope.posts 将使用新的注册数据刷新。
你可以使用这个:
$info = $request->getContent();
$data = json_decode($info,true);
然后使用:
$client->setName($data['name']);