1

私は現在、最初にphpファイルを呼び出してデータを取得し、データセットを反復してテーブルを作成する非常に単純なアプリケーションを持っています。テーブル内に「有効化/無効化」ボタンがあり、クリックするとモデルが更新され、永続化レイヤーにプッシュされます。私が直面している問題は、ビューを適切に更新するモデルを更新することはできますが、モデルの永続レイヤー部分を機能させる方法を理解できないことです。ボタンクリックイベントを反映するためにサービス「有効化/無効化」に2つのカスタム関数を追加しましたが、正しい方向に向かっているかどうかはよくわかりませんが、私のコードは以下の通りです.

ビューのパーシャル:

<table class="table table-hover">
            <thead><tr><th>Name</th><th>Username</th><th>Details</th><th>Facility</th><th>Last Login</th><th>Days from last login</th></tr></thead>
            <tbody>
                <tr ng-class="{'error':user._accountDisabled,'success':user._accountDisabled==false}" ng-repeat="user in users | filter:query | orderBy:orderProp">
                    <td>{{user._firstName}} {{user._lastName}}</td>
                    <td>{{user._userName}}</td>
                    <td><a class="btn btn-primary" href="#/userExceptions/{{user._userName}}">Details</a></td>
                    <td>{{user._facilityName}}</td>
                    <td>{{user._hrLastLogon}}</td>
                    <td>{{user._daysLastLogon}}</td>
                    <td>
            <ng-switch on="user._accountDisabled">
                <button ng-switch-when=true class="btn btn-primary" ng-click="enable(user)">Enable</button>
                <button ng-switch-when=false class="btn btn-danger" ng-click="disable(user)">Disable</button>
            </ng-switch>
            </td>
            </tr>
            </tbody>
        </table>

永続化のためのカスタム サービス:

angular.module('userServices', ['ngResource']).
    factory('User', function($resource) {
return $resource('userActions.php', {}, {
    query: {method: 'GET', params: {userName: 'userName'}, isArray: true},
    enable: {method: 'GET',params: {action: 'enable', userName: 'userName'}}},
    disable: {method: 'GET', params: {action: 'disable', userName: 'userName'}}
});
});

最後にコントローラー:

function UserExceptionsCtrl($scope, User) {
$scope.users = User.query();
$scope.orderProp = '_firstName';

$scope.enable = function(user) {
    $scope.user = user;
    $scope.user._accountDisabled = false;
    $scope.user.$save();
    User.enable({userName:user._userName});
};
$scope.disable = function(user) {
    $scope.user = user;
    $scope.user._accountDisabled = true;
    $scope.user.$save();
    User.disable({action: 'disable', userName: self._userName});
};
}

編集要求されたサーバー側コード:

useractions ファイルはリクエストを処理し、マッパーを作成してユーザー オブジェクトを取得します。ユーザー オブジェクトから必要なプロパティを更新し、永続化レイヤーに保存します。

userActions.php

$username = (isset($_REQUEST['userName']) ? $_REQUEST['userName'] : '');
$action = (isset($_REQUEST['action']) ? $_REQUEST['action'] : '');
require 'library/autoloader/src/autoload.php';
 try {
 $ADUserMapper = new UserMapper(new LDAPAdapter());
 switch ($action) {
case 'enable':
        $ADUserEditMapper = new UserMapper(new LDAPAdapter());
        $user = $ADUserEditMapper->findByUsername($username);
        if ($user) {
            $user->enableADAccount();
            $ADUserEditMapper->updateUAC($user);
        }
        break;
    case 'disable':
        $ADUserEditMapper = new UserMapper(new LDAPAdapter());
        $user = $ADUserEditMapper->findByUsername($username);
        if ($user) {
            $user->disableADAccount();
            $ADUserEditMapper->updateUAC($user);
        }
        break;
    default:
        $adapter = new PdoAdapter();
        $employeeDBMapper = new EmployeeMapper($adapter);
        $ADUsers = $ADUserMapper->findMultipleUsers(array('objectClass' => 'user'), "OU=Users,DC=domain,DC=com", TRUE);
        $exceptions = array();
        foreach ($ADUsers as $user) {
            $employee = $employeeDBMapper->findByUserName($user->userName);
            if (!$employee) {
                array_push($exceptions, $user);
            }
        }
        $result = array();
        foreach ($exceptions as $user) {
            array_push($result, $user->getExceptionData());
        }
        echo json_encode($result);
        break;
}
} catch (Exception $e) {
echo json_encode(array('error' => true, 'errorMessage' => $e->getMessage()));
}
4

0 に答える 0