2016-10-31 5 views
1

私は自分自身を教えています。現在は角張っており、現在、私のフロントエンドからhttpリクエストを送信しています。[]でラップされた角度返りの配列値

私はPOSTリクエストを正常に送信していますが、正しいエラー応答が返されています。返されるエラー応答は、Laravelと基本的にはJSONの応答です。私のテンプレートで

return Response::json(['message' => $validator->errors()], 422); 

これがどのように見える何かを返し、私の角度テンプレートで

{ 
     "message": { 
      "first_name": ["The first name field is required."], 
      "surname": ["The surname field is required."], 
      "email": ["The email field is required."], 
      "school_name": ["The school name field is required."] 
     } 
    } 

私は今の私のコントローラでこれを持って、

app.controller('signupController', function($scope, $http) { 
    console.log("...signup controller initialised..."); 
    $scope.formData = {}; 
    $scope.error = ""; 
    $scope.processForm = function() { 
     console.log($scope.formData); 
     var postForm = $http.post('http://homestead.app/api/invites/create', $scope.formData); 
     postForm.success(function(data, status, headers, config) { 
      $scope.message = data; 
     }); 
     postForm.error(function(data, status, headers) { 
      $scope.error = data; 
      console.log($scope.error); 
     }); 
    } 
}); 

私はのように見えるのエントリを形成しますこれは、

<div class="form-group"> 
    <label for="firstName" class="is-required">First Name</label> 
    <input type="text" class="form-control" id="firstName" name="first_name" ng-model="formData.firstname" ng-class="{'has-error': error.message.first_name}"> 
    <div class="error__block">{{ error.message.first_name }}</div> 
</div> 

今すぐエラーでフォーム入力が割り当てられているエラークラスを取得しますが、エラーブロックは、このような何か、

示し[「最初のnameフィールドが必要です。」]

とき、私は希望

最初の名前フィールドは、私が何かのincorをしています

を要求され、それはこのような何かを示すだろうと思っています私の鋭い端の私のlaravelの端に直腸に?

まだそこにそれを変更するための方法かもしれないが、あなたはこのようなあなたの $http.success()機能で変更を行うことができますので、私はLaravelについて何も知らない
+0

関数が配列を返す場合、配列がJSONでエンコードされる方法です。文字列だけが必要な場合は、 '[0]'で参照して最初の要素を取りますか?この設計は、複数のエラーに対処する意図があるかもしれないことに注意してください。 – tadman

+0

私はとても愚かです(仕事の長い日)。私のフォーム入力には、複数のバリデーションエラーが返される可能性があります。 – Udders

答えて

1

postForm.success(function(data, status, headers, config) { 
    $scope.message = data[0]; 
}); 

の代わりに、着信に$scope.messageを設定します配列の最初の要素を取得し、それを代わりに使用します(インデックス0)。

2

私はあなたがlaravelからフィールドの文字列値の配列ファーストネームを返すと見ているからです。それは本当に大丈夫ではありません、それは単に文字列ではないでしょうか?

そうでない場合は、join first_name配列を使用すると、配列内の複数の値の全体名が取得されます。

関連する問題