2016-11-28 6 views
1

Это моя функция добавления в My Controller, здесь мне нужна функция обновления для обновления значений. как я могу поместить коды обновлений здесь. (Мне нужна функция в той же функции 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'); 
} 

обновленный я изменить код следующим образом

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

    if(is_null($permission)) { 
    $permission = new Permission; 
    $msg = 'Permission has been added to your Collaborator successfully'; 
    } else { 
    $permission = Permission::findOrFail($permission,['id'])->id; 
    $msg = 'Permission updated successfully'; 
    } 

    $permission->status = $request->input('status'); 
    $permission->project_id  = $id; 
    $permission->collaborator_id = $request->input('cid'); 
    $permission->save(); 
    return redirect()->back()->with('info', $msg); 

вставки данных идут успешно. но обновление не удалось, когда я нажимаю кнопку, чтобы обновить его, как новую запись в БД.

Мое имя таблицы разрешение и иметь эти столбцы

id (autoincrement) 
status 
project_id 
collaborator_id 

, как можно исправить эту

новый обновленный

Хорошо это Моя форма

form class="form-vertical" role="form" method="post" action="{{ route('projects.collaborators.permission', $project->id) }}"> 
         <!--<div id="cid" name="cid">{{ $collaborator->user()->first()->id}}</div>--> 
        <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() }}"> 

ответ

0

Ваш контроллер может быть записано как:

public function addPermission(Request $request, $project_id, $permission_id = null) 
{ 
    $this->validate($request, [ 
    'status' => 'required' 
    ]); 

    if(is_null($permission_id)) { 
    $permission = new Permission; 
    $msg = 'Permission has been added to your Collaborator successfully'; 
    } else { 
    $permission = Permission::find($permission_id); 
    $msg = 'Permission updated successfully'; 
    } 

    $permission->status = $request->input('status'); 
    $permission->project_id  = $id; 
    $permission->collaborator_id = $request->input('cid'); 
    $permission->save(); 
    return redirect()->back()->with('info', $msg); 
} 

Так что ваш маршрут может быть как:

Для добавления

/project/{project_id}/permission 

Для обновления

/project/{project_id}/permission/{permission_id} 

Update

Предполагая, что вы будет иметь $permission переменную в виду, когда форма открыта, как редактировать, то вы можете написать действие формы как:

<form class="form-vertical" 
      role="form" 
      method="post" 
      action="{{ isset($permission) ? route('projects.collaborators.permission', ['project_id' => project->id, 'permission_id' => $permission->id]) : route('projects.collaborators.permission', ['project_id' => project->id]) }}"> 

И ваш маршрут будет, как:

Route::post('projects/{project_id}/permission/{permission_id‌​?}', [ 'uses' => '[email protected]', 'as' => 'projects.collaborators.permission',]); 
+0

ваша функция добавить работает, но обновление не работает, оно генерируется ошибкой follwing ** Отсутствие необходимых параметров для [Route: projects.collaborators.permission] [URI: projects/{project_id}/permission/{permission_id}]. ** Мои маршруты редактирования ** Маршрут: : post ('projects/{project_id}/permission/{permission_id}', [ 'использует' => 'ProjectCollaboratorsController @ addPermission', 'as' => ' projects.collaborators.permission ',]); ** – Fernando

+0

Мое полное masseage ошибки ** Отсутствие необходимых параметров для [Route: projects.collaborators.permission] [URI: projects/{project_id}/permission/{permission_id}]. (Вид: C: \ Users \ FFr \ Desktop \ c \ resources \ views \ cообщества \ form.blade.php) (Вид: C: \ Users \ Nalaka \ Desktop \ c \ resources \ views \ cообщества \ form.blade. php) ** и мое действие add add: **

** – Fernando

+0

Это ошибка, потому что для маршрута редактирования требуются два идентификатора' project_id' и 'permission_id', тогда как в вашей форме вы передаете только' project_id', но не 'permission_id'. –

Смежные вопросы