2016-12-03 3 views
0

権限テーブルに値を保存するためにaddpermission関数を使用しています。Laravel 5.2のデータ挿入の検証方法

public function addPermission(Request $request, $id, Permission $permission) 
{ 
    $this->validate($request, [ 
     'status' => 'required' 
    ]); 

    $permission = new Permission; 

    $permission->status = $request->input('status'); 
    $permission->project_id  = $id; 
    $permission->collaborator_id = $request->input('cid'); 
    $permission->save(); 
    return redirect()->back()->with(
     'info', 
     'Permission has been added to your Collaborator successfully' 
    ); 
} 

これは、今、私はいくつかのユーザーが既存の行に新しい値を追加する場合は、このフォームを検証する必要が私のpermiisionaddフォームアクション

<form class="form-vertical" role="form" method="post" 
    action="{{ route('projects.collaborators.permission', $project->id,$collaborator->id) }}"> 

    <input type="hidden" id="cid" name="cid" value="{{ $collaborator->user()->first()->id }}" /> 
    <div class="form-group{{ $errors->has('status') ? ' has-error' : '' }}"> 
    <label for="status" class="control-label">Choose Permission</label> 
    <select name="status" id="status"> 
    <option value="">Choose a status</option> 
    <option value="3">View Only</option> 
    <option value="2">Edit Tasks</option> 
    <option value="1">Admin</option> 
    </select> 
    @if ($errors->has('status')) 
    <span class="help-block">{{ $errors->first('status') }}</span> 
    @endif 
    </div> 
     <div class="form-group"> 
     <button type="submit" class="btn btn-default">Create</button> 
     </div> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 

である(いくつかのメッセージを生成する)

私はどのように行うことができますこの?

 $this->validate($request, [ 
     'cid'  => 'unique:permissions,collaborator_id', 
     'status' => 'required' 
    ]); 

このユーザーがテーブルにすでに行を持っている場合は、この方法で、それは勝った

:私が正しくあなたを理解している場合

+0

あなたは既に検証コードを持って、いただきました!問題ですか? –

+0

いいえ、その検証は空の値です。つまり、値を指定しないでボタンをクリックすると、検証されます。同じユーザーに既存の値を追加すると、新しいレコードも保存されます。これを検証する必要があります(既存のレコードに値を追加する場合は、検証する必要があります) – Fernando

答えて

0

、あなたはこのように、あなたの隠されたCIDフィールドに独自の検証ルールを使用する必要があります新しいものを作成させて、検証エラーが表示されるようにしてください。

ただし、フォームが受け入れられない理由をユーザーが理解するのに役立つように、カスタムエラーメッセージを作成する必要があります。またcidフィールドのエラーが表示されるようにするために、フォーム上のどこかに余分なスパンを作成することを忘れていけない:

@if ($errors->has('cid')) 
    <span class="help-block">{{ $errors->first('cid') }}</span> 
@endif 
+0

私はあなたの最初の検証が必要です。しかし、私がそれを使用したとき**構文エラー、予期しない ''ステータス ''(T_CONSTANT_ENCAPSED_STRING)、 'を期待しています' ** – Fernando

+0

はい、cidルールの後にカンマがありませんでした。 – LePhleg

+0

しかし、コンマを置くと、このエラーが発生しました** SQLSTATE [42S02]:ベーステーブルまたはビューが見つかりません:1146 'samantha.permission'テーブルが存在しません(SQL:count(*)を 'permission' 'collaborator_id' = 29)** – Fernando

関連する問題