Avec Laravel 5 J'essaie de supprimer un seul enregistrement dans un contrôleur.
public function destroy($id)
{
$employee = Employee::find($id);
$employee->delete();
return Redirect::route('noorsi.employee.index');
}
Mon code de page d'affichage est:
<td><a href="employee/{{$employee->id}}/destroy" class="btn btn-default">Delete</a></td>
Mon itinéraire est:
Route::delete(employee.'/{id}', array('as' => 'noorsi.employee.destroy','uses' => Employeecontroller.'@destroy'));
Cela n'a pas fonctionné.
Comment puis-je réparer la mise en œuvre?
De l'officiel Laravel 5 documentations:
Supprimer un modèle existant
$user = User::find(1);
$user->delete();
Suppression d'un modèle existant par clé
User::destroy(1);
User::destroy([1, 2, 3]);
User::destroy(1, 2, 3);
Dans tous les cas, le nombre entre parenthèses représente l'ID d'objet, mais vous pouvez également exécuter une requête delete sur un ensemble de modèles:
$affectedRows = User::where('votes', '>', 100)->delete();
Donc, le moyen de Laravel de supprimer en utilisant la fonction destroy
est
<form action="{{ url('employee' , $employee->id ) }}" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button>Delete Employee</button>
</form>
Vous pouvez trouver un exemple ici http://laravel.com/docs/5.1/quickstart-intermediate#adding-the-delete-button Et votre itinéraire devrait ressembler à ceci:
Route::delete('employee/{id}', array('as' => 'employee.destroy','uses' => 'Employeecontroller@destroy'));
Cela fonctionne avec par exemple: Route::resource('employee', 'EmployeeController');
et devrait également fonctionner avec la façon dont vous configurez votre route de destruction.
De toute évidence, vous avez un problème de routage. Vous essayez d'utiliser un verbe 'obtenir' pour atteindre un itinéraire défini avec un verbe 'supprimer'.
Si vous souhaitez utiliser une ancre pour supprimer un enregistrement, vous devez ajouter cet itinéraire:
Route::get('/employee/{id}/destroy', ['uses' => 'EmployeeController@destroy']);
ou continuez à utiliser un verbe supprimer, mais vous devez alors utiliser un formulaire (et non une ancre) avec un paramètre appelé _method
et la valeur 'delete'
indiquant que vous utilisez un verbe 'supprimer'.
Route::get('/showcon/{del_id}/delete','MainController@deletemsg');
public function deletemsg($del_id){
$mail=Mail::find($del_id);
$mail->delete($mail->id);
return redirect()->back();
}
<a href="showcon/{{$m->id}}/delete">del</a>