Sign up ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.

I'am following this tutorial http://welcometothebundle.com/web-api-rest-with-symfony2-the-best-way-the-post-method/, but I have a client in angularjs and a rest API with symfony.

My problem is I still don't know how can I send the data from my form in angularjs to symfony2's controller then to database Mysql.

update: I know how to add data statically in Client controller to database,but how to do it with values from th angularjs form

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());

and this is app.js in which I define the controller:

.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 ...");
  });
}]);

when I run my client angularjs,the static data will be stocked in the database Any idea please and thanks for help.

share|improve this question
    
You need to show your code and what you've tried, such as possible error messages. –  bcesars Mar 10 at 14:18
    
Hi @bcesars,I know how to insert data statically like this: –  miratum Mar 10 at 17:18
    
any help please :( –  miratum Mar 10 at 19:20

1 Answer 1

So, to store data from angularJS client to symfony2 server, you must do :

Install a simple listener to handle json requests in Symfony

qandidate-labs/symfony-json-request-transformer

The client form (example)

<form ng-submit="submitForm()">
    <input ng-model="postData.name"/>
    <input ng-model="postData.address"/>
    <input ng-model="postData.civility"/>
</form>

The submit form action (client)

$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 ...");
        });
};

The store action (server)

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());
}

If you want return data for reload scope variable, add this to your method :

//...
$clients = $em->getRepository('YourBundle:Client')->findAll();
//...

And change your return to :

//...
return new JsonResponse($clients);

Then, the returned response will contains your data, and $scope.posts will be refresh with new registered data.

share|improve this answer
    
Problem Solved ? –  chalas_r Sep 4 at 7:11

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.