2015-03-13 3 views
0

Я создал в UserController метод добавления новых пользователей в базу данных. В cake-файлах cake-файлов все файлы в порядке, так как мой запрос не является черным. Я использую пост для этого. Но когда я перемещаю взгляд на углы, запрос черный. Я не понимаю. Может ли кто-нибудь помочь мне.angularjs + cakephp black-holed request

Вот код UsersController.php, функция называется дополнением является один делает материал:

<?php 

class UsersController extends AppController { 

public $components = array(
    'RequestHandler', 
    'Security', 
    'Session', 
    'Auth' 
); 



public function login() { 

    if ($this->Session->read('Auth.User')) { 
     $this->set(array(
      'message' => array(
       'text' => __('You are logged in!'), 
       'type' => 'error' 
      ), 
      '_serialize' => array('message') 
     )); 
    } 

    if ($this->request->is('post')) { 
     if(!empty($this->request->data)){ 
      $userDetails = $this->User->find('first', array(
              'conditions' => array(
              'User.username' => $this->request->data['username'], 
              'User.password' => $this->request->data['password'] 
              ))); 
      debug($userDetails); 
      debug($this->Auth->login()); 
     } 
     if ($this->Auth->login()) { 

      $this->set(array(
       'user' => $this->Session->read('Auth.User'), 
       '_serialize' => array('user') 
      )); 
     } else { 
      $this->set(array(
       'message' => array(
        'text' => __('Invalid username or password, try again'), 
        'type' => 'error' 
       ), 
       '_serialize' => array('message') 
      )); 
      $this->response->statusCode(401); 
     } 
    } 
} 
public function logout() { 
    if ($this->Auth->logout()) { 
     $this->set(array(
      'message' => array(
       'text' => __('Logout successfully'), 
       'type' => 'info' 
      ), 
      '_serialize' => array('message') 
     )); 
    } 
} 

public function add(){ 

    if($this->request->is('post')){ 
     if(!empty($this->request->data)){ 
      $password = $this->request->data['User']['password']; 
      $username = $this->request->data['User']['username']; 
      //$password = Security::hash($this->request->data['User']['password'], 'sha1', true); 

      $password = Security::hash($password.$username, 'sha1', true); 
      debug($password); 
     } 
    } 

    //$this->set(array('message',array('error' => __("No data sent")), '_serialize' => array('message'))); 
} 
public function index() { 
    $this -> user = $this -> Auth -> user(); 
    if ($this -> user) { 
     $this -> set('users', $this -> User -> find('all')); 
     $this -> set('_serialize', array('users')); 
    } 
    else { 
     $this -> set('error', 'user not logged in'); 
     $this -> set('_serialize', array('error')); 
    } 

} 

public function user($id = null) { 

    $this -> layout = null; 

    if (!$id) { 
     throw new NotFoundException(__('Invalid user')); 
    } 

    $user = $this -> User -> findById($id); 

    if (!$user) { 
     throw new NotFoundException(__('Invalid user')); 
    } 
    $this -> set('user', $user); 
} 

} 
?> 

И это угловой регулятор:

angular.module('addUser.controllers', []).controller('addUserCtrl', function($scope, $http) { 
$scope.register = function() { 

    data = {'User':{ 
     'username' : $scope.username, 
     'password' : $scope.password 
    }}; 

    if(data.User.username != undefined && data.User.password != undefined){ 
     $http.post('API/users/add', data).success(function(data) { 
     $scope.users = data.users; 
     console.log(data); 
    }); 
    }else{ 
     console.log('can\'t login'); 
    } 
    /**/ 

}; 

}); 

PS: Я новичок с тканью. Большое спасибо и счастливое кодирование;)

+0

Видите ли вы какие-либо ошибки в консоли JavaScript? –

+0

'typeof (data.User.username)! =" Undefined "' более подходит. Кроме того, рекомендуется использовать разные имена переменных для ваших данных запроса и ответа. –

+0

Actualy Теперь я увидел, что есть плохая просьба с кодом 400 для ссылки, но если я открою ее в новом окне, она будет работать, а также если я отправлю данные из файла вида ctp. – cojok

ответ

0

Я нашел решение проблемы, поскольку я прошел через всю книгу cakephp и получил это решение, не знаю, правильно ли это, но для меня все в порядке , Это ссылка ссылка и для меня это было как линии в книге:

public function beforeFilter() { 
    $this -> Security -> blackHoleCallback = 'blackhole'; 

} 

public function blackhole($type) { 
    return $type;// don't know if it is good or bad practice like this feel free to comment 
}