2016-05-04 3 views
0

私はLaravel 5.2バックエンドAPIとAngularJS Frontendを使用していますが、検証が失敗した場合にはラーバル検証と戻り値とエラーを実行します。フォーマットAngularJS ng-repeatテキストをLaravel APIから取得

私はトラフエラーを反復処理し、私はこのような気にいらを取得するフロントエンド上に表示:

["The email has already been taken."] 

と私は[「」]のものなしでこの

The email has already been taken. 

のようになりたいです。

私のコードは次のとおり

角度コントローラ:

if (error.statusText === "Unprocessable Entity") { 

      $scope.registerErrors = error.data; 
} 

角度テンプレート:

<div class="alert alert-warning animated pulse" ng-if="registerError && isLoading === false"> 
<p ng-repeat="(error, errorText) in registerErrors">{{errorText}}</p> 
</div> 

Laravelコントローラ:

$this->validate($request, [ 
      'firstname' => 'required|max:100|min:3', 
      'lastname' => 'required|max:100|min:3', 
      'email' => 'required|email|unique:users|max:255', 
]); 

CONSOLE.LOG:

enter image description here

ありがとうございます!

+0

をしようとする方が良いでしょう? –

+0

私はカスタムフィルタを作成しようとします...ありがとう – vitaminasweb

答えて

1

のためにerrorTextにはemailの配列が含まれており、完全なメール配列が表示されています。電子メールが複数のエラーが含まれている場合、その後 は次のように試すことができます。

<p ng-repeat="(error, errorObject) in registerErrors"> 
    <span ng-repeat=" singleError in errorObject">{{singleError}}</span> 
</p> 

または単一のエラーのためにのように試すことができます。

<p ng-repeat="(error, errorText) in registerErrors">{{errorText[0]}}</p> 

か、単にerror.data

if (error.statusText === "Unprocessable Entity") { 
    $scope.registerErrors = error.data.email; 
} 
+0

それは何も表示されていません( – vitaminasweb

+0

'p'タグの' span'タグを使用する必要があります仕事は私の答えを更新しました@vitaminasweb –

+0

それは働いています! error.dataに配列が含まれていて配列が配列されている場合に発生します...私はバックエンドでいくつかの検証が失敗したことをシミュレートしようとしましたが、$ this-> validate($ request ...を使用するとlaravelが最初に遭遇したエラーを返します。私のために。みんなありがとう! – vitaminasweb

0

の作業フィドルの代わりにerror.data.emailを割り当てます。 https://jsfiddle.net/udr9dksa/

{{emailTaken | cleanError}} 

フィルタ:

app.filter("cleanError", function() { 
    return function(input) { 
    if(!input) return ""; 

    return input.slice(2, -2); 
    } 
}); 
+0

何らかの理由でうまくいきません...私は応答としてしか得られません[ – vitaminasweb

1

実際にあなたが$scope.registerErrors = error.data.email;$scope.registerErrors = error.data;を変更する必要があります。 error.data.emailは配列です。

あなたは、同時にいくつかのエラーを持っている場合、それは '``/[\ [\] \' `と\"]/G`' を置き換えるフィルタを使用して、この

if (error.statusText === "Unprocessable Entity") { 
     $scope.registerErrors=[]; 
     if(error.data.email)$scope.registerErrors.push(error.data.email[0]); 
     if(error.data.firstname)$scope.registerErrors.push(error.data.firstname[0]); 
     if(error.data.lastname)$scope.registerErrors.push(error.data.lastname[0]); 
} 
+0

] error.dataには常に電子メールだけが含まれているとは限らず、同時に複数のエラーが含まれる可能性があります...その理由はng-repeat – vitaminasweb

+0

firstnameとlastnameのケースを追加できます。回答は –

+0

です。複数のエラーが同時に発生した場合は、更新された回答が表示されます。 –

関連する問題