在 Angular JS 中给我提交的表单内容的最佳方式

Best way to give slim the contente of my submited form in Angular JS

我正在尝试将表单中的数据发送到我的 Slim API。

我的表格是:

<form>
    Username:<br>
    <input type="text" name="username"><br>
    Password:<br>
    <input type="text" name="password">
    <input type="button" value="submit" ng-click="testDatabaseNewUser()">
</form> 

我的控制器:

angular.module('appDatabaseCtrl', [])
.controller('databaseCtrl', ['$scope', '$http', '$log',
    function($scope, $http, $log){
        $scope.testDatabaseNewUser = function(){
            $http.post('api/New_User').success(function(data) {
                $log.info("succes!");
                $log.log(data);
            })
            .error(function (data, status){
                $log.error("error!");
                $log.log(data);
            });
        };
    }
]);

在我的 API 中,我有:

<?php

require 'vendor/autoload.php';
require 'config/config.php';

$app = new \Slim\App;

$app->post('/New_User', 'addUser');

$app->run();

function DB_Connection() {
    global $dbparams;
    $dbhost = $dbparams['host'];
    $dbuser = $dbparams['user'];
    $dbpass = $dbparams['password'];
    $dbname = $dbparams['dbname'];
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}

function addUser($req, $resp, $args) {
    ...
}

?>

知道了所有这些,我只想在我的 addUser 函数中访问我的表单的内容。我知道我可以在 url 中传递这些信息,但我想要一种不需要我这样做的方式。

当您使用请求方法'POST'时,您可以在请求的 BODY 中传递一些信息。

在angular中你可以这样做:

$http.post('api/New_User')函数中传递对象

$http.post('api/New_User',object)

HTML:

<form>
    Username:<br>
    <input type="text" name="username" ng-model="user.username"><br>
    Password:<br>
    <input type="text" name="password" ng-model="user.password">
    <input type="button" value="submit" ng-click="testDatabaseNewUser()">
</form> 

你的 控制器:

angular.module('appDatabaseCtrl', [])
.controller('databaseCtrl', ['$scope', '$http', '$log',
    function($scope, $http, $log){
        $scope.user = {};
        $scope.testDatabaseNewUser = function(){
            $http.post('api/New_User', $scope.user).success(function(data) {
                $log.info("succes!");
                $log.log(data);
            })
            .error(function (data, status){
                $log.error("error!");
                $log.log(data);
            });
        };
    }
]);

在你PHP:

function addUser($req, $resp, $args) {
    ...
    $req.body ...
}

我想这会有所帮助

http://www.angularcode.com/demo-of-a-simple-crud-restful-php-service-used-with-angularjs-and-mysql/

我找到了解决方案,它与 Alvaro 建议的完全一样,但 API 中的代码有点不同:

function addUser($req, $resp, $args) {
    $user = json_decode($req->getBody());
    $user->privilege;
}

我找到了解决方案,就像 Alvaro 所说的一样,但有点不同。

在PHP中:

function addUser($req, $resp, $args) {
    $user = json_decode($req->getBody());

    //Than I can just use
    $user->username;
    $user->password;
}