2016-12-17 4 views
0

мой взгляд, как это:Как решить Missing аргумент 2 для App Http Controllers UserController :: destroy() в laravel 5.3?

@foreach($users as $user) 
    <tr> 
     <td>{!! $user->id !!}</td> 
     <td>{!! $user->username !!}</td> 
     <td>{!! $user->phone !!}</td> 
     <td>{!! $user->address !!}</td> 
     <td> 
      {!! Form::open(['route' => ['users.destroy', $user->id], 'method' => 'delete']) !!} 
      <div class='btn-group'> 
       <a href="{!! route('users.edit', [$user->id]) !!}" class='btn btn-default btn-xs'><i class="glyphicon glyphicon-edit"></i></a> 
       {!! Form::button('<i class="glyphicon glyphicon-trash"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 
      </div> 
      {!! Form::close() !!} 
     </td> 
    </tr> 
@endforeach 

Мои маршруты \ web.php как это:

Route::get('users/destroy/{year}', '[email protected]')->name('users.destroy.year'); 

Route::resource('users', 'UserController'); 

Мой контроллер выглядит так:

public function destroy($id, $year) 
{ 
    $user = $this->userRepository->findWithoutFail($id); 

    if (empty($user)) { 
     Flash::error('User not found'); 

     return redirect(route('users.index')); 
    } 

    $this->userRepository->delete($id); 

    Flash::success('User deleted successfully.'); 

    // return redirect(route('users.index')); 
    return redirect(route('users.index.year', ['year' => $year])); 
} 

Существует существует ошибка, как это:

ErrorException in UserController.php line 205: Missing argument 2 for App\Http\Controllers\UserController::destroy() 

И URL выглядит следующим образом: http://localhost/mysystem/public/users/10

При нажатии кнопки удалить, я хочу, чтобы URL выглядит следующим образом: http://localhost/mysystem/public/users/index/2020

Есть ли люди, которые могут мне помочь?

+0

Вы должны указать год, а в ' 'маршрут' => [ 'users.destroy', $ user-> ID]', вы в настоящее время отсутствует один аргумент. –

+0

@Joel Hinz, я изменяю вот так: '{!! Форма :: open (['route' => ['users.destroy', $ user-> id, $ year], 'method' => 'delete']) !!} '. Когда я нажимаю кнопку «Удалить», URL-адрес выглядит следующим образом: «http: // localhost/mysystem/public/users/10? 2020». Таким образом, он не работает –

+0

Похоже, вы также не указали идентификатор пользователя из определения маршрута. –

ответ

0

Попробуйте

$year = 2020; 
{!! Form::open(['route' => ['users.destroy', $user->id, $year], 'method' => 'delete']) !!} 
+0

Я изменяю вот так: '{!! Форма :: open (['route' => ['users.destroy', $ user-> id, $ year], 'method' => 'delete']) !!} '. Когда я нажимаю кнопку «Удалить», URL-адрес выглядит следующим образом: «http: // localhost/mysystem/public/users/10? 2020». Итак, он не работает –

0

Может быть, вы можете попробовать: В маршрутах/web.php просто объявить ресурс маршрута

Route::resource('users', 'UserController'); 

В вы формируете добавить вход, скрытый со значением года

{!! Form::open(['route' => ['users.destroy', $user->id], 'method' => 'delete']) !!} 


<input type="hidden" name="year" value="2020"> 

И обновите свой контроллер таким образом

public function destroy(Request $request, $id) 
{ 
$user = $this->userRepository->findWithoutFail($id); 
$year = $request->year; 
if (empty($user)) { 
    Flash::error('User not found'); 

    return redirect(route('users.index')); 
} 

$this->userRepository->delete($id); 

Flash::success('User deleted successfully.'); 

// return redirect(route('users.index')); 
return redirect('users/index/'.$year); 

}

0

Вы используете неправильное название маршрута в методе open, он должен быть users.destroy.year.

Так что ваша форма будет выглядеть так:

{!! Form::open(['route' => ['users.destroy.year', $user->id, $year], 'method' => 'delete']) !!} 
+0

Я изменил его. Но существует такая ошибка: 'MethodNotAllowedHttpException в строке RouteCollection.php 218:' и в url выглядит так: 'http: // localhost/mysystem/public/users/destroy/2? 2016' –

+0

Изменить маршрут используйте 'delete' verb как' Route :: delete (...) '. Попробуйте, если он решает вашу проблему. –

+0

Я использую http://labs.infyom.com/laravelgenerator/ или https://github.com/InfyOmLabs/adminlte-generator/tree/5.3. Кажется, что удаление было создано автоматически. Поэтому нет необходимости добавлять маршруты. –

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