我是Laravel和Angularjs的新手。我会逐步跟进文章How to Consume Laravel API with AngularJS。
完成注册功能(包括signup.html,controller.js和service.js)后,单击注册按钮进行注册。但按钮响应没什么。我跟邮递员一样测试后端How to Build an API-Only JWT-Powered Laravel App,它有效。我不知道发生了什么,我该先做什么?
以下是代码:
的 signup.html:
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h2>Signup</h2>
<p>Welcome! If you want to sign up to our awesome service, fill this form and press on "Signup"!</p>
<hr>
<p><input type="text" class="form-control" placeholder="Name..." ng-model="name" required /></p>
<p><input type="text" class="form-control" placeholder="Email Address..." ng-model="email" required /></p>
<p><input type="password" class="form-control" placeholder="Password..." ng-model="password" required /></p>
<hr>
<p><button type="button" class="btn btn-success form-control" ng-click="signup()">Signup</button></p>
<hr>
<p><a href="#login">Already signed up? <b>Log in!</b></a></p>
</div>
</div>
的 JS / controllers.js
bookWishlistAppControllers.controller('SignupController', ['$scope', '$location', 'userService', function ($scope, $location, userService) {
$scope.signup = function() {
userService.signup(
$scope.name, $scope.email, $scope.password,
function(response){
alert('Great! You are now signed in! Welcome, ' + $scope.name + '!');
$location.path('/');
},
function(response){
alert('Something went wrong with the signup process. Try again later.');
}
);
}
$scope.name = '';
$scope.email = '';
$scope.password = '';
if(userService.checkIfLoggedIn())
$location.path('/');
}]);
的 JS / services.js
var bookWishlistAppServices = angular.module('bookWishlistAppServices', [
'LocalStorageModule'
]);
bookWishlistAppServices.factory('userService', ['$http', 'localStorageService', function($http, localStorageService) {
function checkIfLoggedIn() {
if(localStorageService.get('token'))
return true;
else
return false;
}
function signup(name, email, password, onSuccess, onError) {
$http.post('/api/auth/signup',
{
name: name,
email: email,
password: password
}).
then(function(response) {
localStorageService.set('token', response.data.token);
onSuccess(response);
}, function(response) {
onError(response);
});
}
function login(email, password, onSuccess, onError){
$http.post('/api/auth/login',
{
email: email,
password: password
}).
then(function(response) {
localStorageService.set('token', response.data.token);
onSuccess(response);
}, function(response) {
onError(response);
});
}
function logout(){
localStorageService.remove('token');
}
function getCurrentToken(){
return localStorageService.get('token');
}
return {
checkIfLoggedIn: checkIfLoggedIn,
signup: signup,
login: login,
logout: logout,
getCurrentToken: getCurrentToken
}
}]);
api_routes.php:
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->post('auth/login', 'App\Api\V1\Controllers\AuthController@login');
$api->post('auth/signup', 'App\Api\V1\Controllers\AuthController@signup');
$api->post('auth/recovery', 'App\Api\V1\Controllers\AuthController@recovery');
$api->post('auth/reset', 'App\Api\V1\Controllers\AuthController@reset');
$api->group(['middleware' => 'api.auth'], function ($api) {
$api->resource('books', 'App\Api\V1\Controllers\BookController');
});
});
AuthController.php:
class AuthController extends Controller
{
public function signup(Request $request)
{
$signupFields = Config::get('boilerplate.signup_fields');
$hasToReleaseToken = Config::get('boilerplate.signup_token_release');
$userData = $request->only($signupFields);
$validator = Validator::make($userData, Config::get('boilerplate.signup_fields_rules'));
if($validator->fails()) {
throw new ValidationHttpException($validator->errors()->all());
}
User::unguard();
$user = User::create($userData);
User::reguard();
if(!$user->id) {
return $this->response->error('could_not_create_user', 500);
}
if($hasToReleaseToken) {
return $this->login($request);
}
return $this->response->created();
}
}