【问题标题】:Unable to add new input on AngularJS with Slim REST无法使用 Slim REST 在 AngularJS 上添加新输入
【发布时间】:2015-07-15 21:31:07
【问题描述】:

我无法使用 Slim PHP Rest Service 和 Angular JS 添加新项目,如何将其添加到数据库中?

以下是我的代码: Slim REST 服务代码 //添加单个位置的函数

function AddLocation()
{  
   $app = \Slim\Slim::getInstance(); 

   //
    $request = Slim::getInstance()->request();
   $location = json_decode($request->getBody()); 
   $sql = "INSERT INTO locations (location_title, location_latitude, location_longitude') VALUES (:location_title, :location_latitude, :location_longitude)"; 
   // 
    try { 
      $db =  conn_db(); 
      $stmt = $db->prepare($sql); 
      $stmt->bindParam("location_title", $location->location_title);
        $stmt->bindParam("location_latitude", $location->location_latitude); 
        $stmt->bindParam("location_longitude", $location->location_longitude); 


        $stmt->execute();
        $location->location_id = $db->lastInsertId();
        $db = null;
        echo json_encode($location); 

    } catch (PDEOxception $e) { 

        echo 'Error';   
    } 

} 

Angular JS 代码

//CONTROLLER == add new page 
    countryApp.controller('AddNew', function($scope, $http, $location) { 

        $scope.master = {}; 
        $scope.activePath = null; 

        $scope.add_new = function(location, AddNewForm) { 
            $http.post('http://localhost/slimtest2/add_location', location).success(function() { 
                $scope.reset(); 
                $scope.activePath = $location.path('/'); 

            }); 

            $scope.reset = function() { 
               $scope.location = angular.copy($scope.master);  
            }; 

            $scope.reset(); 
        }; 
    }); 

【问题讨论】:

    标签: javascript php angularjs rest slim


    【解决方案1】:

    这是一个例子:

    $app = new \Slim\Slim();
    ...
    $app->post('/products', function() use ($app) { 
        $data = json_decode($app->request->getBody());
        $mandatory = array('name');
    
        global $db;
        $rows = $db->insert("products", $data, $mandatory);
        if($rows["status"] == "success")
            $rows["message"] = "Product added successfully.";
        echoResponse(200, $rows);
    });
    function echoResponse($status_code, $response) {
        global $app;
        $app->status($status_code);
        $app->contentType('application/json');
        echo json_encode($response, JSON_NUMERIC_CHECK);
    }
    
    $app->run();
    

    Angular 代码调用函数

    $scope.saveProduct = function (product) {
    ...
    Products.post('products', product).then(function (result) {
      if (result.status != 'error') {
    
        console.log(result);
    
    
        var x = angular.copy(product);
        x.save = 'insert';
        x.id = result.data;
        $modalInstance.close(x);
      } else {
        console.log(result);
      }
    });
    ...
    

    和模板

     <form name="product_form" class="form-horizontal" role="form" novalidate>
    
    <form-element label="NAME" mod="product">
      <input type="text" class="form-control" name="name" placeholder="NAME" ng-model="product.name" ng-disabled="product.id" focus/>
    </form-element>
    
    <form-element label="DESCRIPTION" mod="product">
      <textarea class="form-control" name="description" placeholder="DESCRIPTION" ng-model="product.description">{{product.description}}</textarea>
    </form-element>
    ...
    <button ng-click="saveProduct(product);"
            ng-disabled="product_form.$invalid || enableUpdate"
            class="btn btn-sm btn-primary"
            type="submit">
      <i class="ace-icon fa fa-check"></i>{{buttonText}}
    </button>
    

    你有角部分的好例子: Building a Basic CRUD Application Using AngularJS and Slim PHP framework (Part 1) 和纤细部分的很好的例子RESTful services with jQuery, PHP and the Slim Framework

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2018-11-14
      • 1970-01-01
      相关资源
      最近更新 更多