Создание PHP MVC приложения. Редактирование пользователя через пользовательскую angular директиву

Главная » Видеоуроки » PHP+MySQL » Создание PHP MVC приложения. Редактирование пользователя через пользовательскую angular директиву

На прошлом уроке мы научились создавать собственные директивы в angular js. Сегодня мы продолжим использовать нашу директиву, прочитав в поля форма данные пользователя.

Код урока (users.js)

var users = angular.module('users', []);

users.controller("usersController", function($scope, $http){


	$scope.getUserData = function(userId) {
		$http({
			method: "POST",
			url: "http://cabinet.kamil-abzalov.ru/cabinet/users/getUserById",
			data: $.param({id: userId}),
			headers: {'Content-Type': 'application/x-www-form-urlencoded'}
		}).then(function(result){
			$scope.userId = result.data.id;
			$scope.fullName = result.data.fullName;
			$scope.login = result.data.login;
			$scope.email = result.data.email;
			$scope.getRoles();
		})
	}

	$scope.getRoles = function() {
		$http({
			method: "POST",
			url: "http://cabinet.kamil-abzalov.ru/cabinet/users/getUsersRoles",
			headers: {'Content-Type': 'application/x-www-form-urlencoded'}
		}).then(function(result){
			$scope.roles = [];
			for(var i=0; i<result.data.length; i++) {
				$scope.roles.push(result.data[i]);
			}
		})	
	}


});


users.directive('editUser', function(){
	return {
		templateUrl: "/views/edit-user-tpl.php",
		restrict: "E",
		replace: true,
		transclude: true,
		controller: "usersController",
		link: function(scope, element, attrs) {
			scope.showEditForm = function() {
				scope.isShowEditForm = true;
			}
		}
	}
})

Код урока (UsersController)

<?php


class UsersController extends Controller {

	private $pageTpl = "/views/users.tpl.php";


	public function __construct() {
		$this->model = new UsersModel();
		$this->view = new View();
	}

	public function index() {

		if(!$_SESSION['user']) {
			header("Location: /");
		}
		$this->pageData['title'] = "Пользователи";
		$this->pageData['usersList'] = $this->model->getUsers();
		$this->view->render($this->pageTpl, $this->pageData);
	}

	public function getUserById() {

		if(!$_SESSION['user']) {
			header("Location: /");
		}

		if(isset($_POST['id']) && $_POST['id'] != '') {
			$userId = $_POST['id'];
			$userInfo = json_encode($this->model->getUserById($userId));
			echo $userInfo;
		} else {
			echo json_encode(array("success" => false, "text" => "ошибка"));
		}
	}

	public function getUsersRoles() {

		if(!$_SESSION['user']) {
			header("Location: /");
		}

		$roles = $this->model->getRoles();
		if(empty($roles)) {
			echo json_encode(array("success" => false, "text" => "ошибка"));
		} else {
			echo json_encode($roles);
		}

	}


}

Код урока (UsersModel)

<?php

class UsersModel extends Model {


	public function getUsers() {

		$sql = "SELECT users.id, users.login, users.fullName, users.email, role.name as role FROM users 
				INNER JOIN role ON users.role_id = role.id";

		$stmt = $this->db->prepare($sql);
		$stmt->execute();
		$result = array();
		while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
			$result[$row['id']] = $row;
		}

		return $result;		

	}


	public function getUserById($id) {
		$sql = "SELECT users.id, users.email, users.fullName, users.login, role.name as role FROM users	
				INNER JOIN role ON users.role_id = role.id
				WHERE users.id = :id";


		$stmt = $this->db->prepare($sql);
		$stmt->bindValue(":id", $id, PDO::PARAM_INT);
		$stmt->execute();
		$result = $stmt->fetch(PDO::FETCH_ASSOC);
		if(!empty($result)) {
			return $result;
		} else {
			return false;
		}		
	}

	public function getRoles() {
		$result = array();
		$sql = "SELECT * FROM role";
		$stmt = $this->db->prepare($sql);
		$stmt->execute();
		while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
			$result[] = $row;
		}
		return $result;
	}


}

Код урока (шаблон директивы edit-user-tpl.php)

<form method="post" class="form-horizontal" data-ng-show="isShowEditForm">
	<input type="hidden" data-ng-model="userId">		

	<fieldset>
		<div class="form-group">
			<label for="fullName" class="col-md-4 control-label">ФИО</label>
			<div class="col-md-4">
				<input type="text" id="fullName" name="fullName" data-ng-model="fullName" class="form-control" required="true">
			</div>
		</div>
		<div class="form-group">
			<label for="login" class="col-md-4 control-label">Логин</label>
			<div class="col-md-4">
				<input type="text" id="login" name="login" data-ng-model="login" class="form-control" required="true">
			</div>
		</div>
		<div class="form-group">
			<label for="email" class="col-md-4 control-label">Email</label>
			<div class="col-md-4">
				<input type="email" id="email" name="email" data-ng-model="email" class="form-control" required="true">
			</div>
		</div>
		<div class="form-group">
			<label for="fullName" class="col-md-4 control-label">Роль</label>
			<div class="col-md-4">
				<select name="role" id="role" data-ng-model="role" class="form-control">
					<option value="{{role.id}}" data-ng-repeat="role in roles">{{role.name}}</option>
				</select>
			</div>
		</div>
		<div class="from-group">
			<div class="col-md-4 col-md-offset-4">
				<button class="btn btn-success">Сохранить</button>
				<button class="btn btn-danger">Удалить</button>
			</div>
		</div>
	</fieldset>
</form>

0 Комментариев

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.

Pin It on Pinterest

Share This