суббота, 24 июня 2017 г.

Миникурс по Laravel. Урок 6.

Реализуем механизм удаления статьи.
В routes/web.php


//удаление статьи
Route::delete('page/delete/{article}', function($article) {
//dump($article); // 6 - это id статьи
// выберем из БД статью, которую нужно удалить
$article_tmp = \App\Article::where('id', $article)->first();
//dump($article_tmp); // массив статьи с идентификатором
$article_tmp->delete(); // удаляет запись из БД
return redirect('/');
})->name('articleDelete');

Мы можем упростить механизм:
//удаление статьи
// Article $article - объект модели класса Article
Route::delete('page/delete/{article}', function(\App\Article $article) {
//dd($article); // The dd function dumps the given variables and ends execution of the script:
$article->delete(); // удаляет запись из БД
return redirect('/');
})->name('articleDelete');


Идем в вид отображения каждой статьи page.blade.php и добавляем кнопку Удалить.

Справка:
Form Method Spoofing

HTML forms do not support PUT, PATCH or DELETE actions. So, when defining PUT, PATCH or DELETE routes that are called from an HTML form, you will need to add a hidden _method field to the form. The value sent with the _method field will be used as the HTTP request method:

<form action="/foo/bar" method="POST">
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

You may use the method_field helper to generate the _method input:

{{ method_field('PUT') }}



@extends('layouts.site') <!-- наследует шаблон -->
@section('content') <!-- директива секции контента -->
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<div class="container">
<h1>{{$header}}</h1>
<p>{{$message}}</p>
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>
</div>
</div>

<div class="container">
<!-- Example row of columns -->
<div class="row">
@foreach($articles as $article)
<div class="col-md-4">
<h2>{{ $article->title }}</h2>
<p>{!! $article->desc !!}</p> <!-- {!! отключают теги -->
<p><a class="btn btn-default" href="{{ route('articleShow', ['id' => $article->id]) }}" role="button">Подробнее &raquo;</a></p>
<form action="{{ route('articleDelete', ['article' => $article->id]) }}" method="post">
<button type="submit" class="btn btn-danger">
Удалить
</button>
<!--<input type="hidden" name="_method" value="DELETE"/>--> <!-- Отправляем имя типа запроса на сервер -->
{{method_field('DELETE')}} <!-- Альтернативный вариант для указания типа запроса -->
{{ csrf_field() }} <!-- реализует защиту от межсайтовых подделок запросов -->
</form>
</div>
@endforeach

<hr>
<div style="clear: both"></div>
<footer style="margin-top: 30px">
<p>&copy; 2016 Company, Inc.</p>
</footer>

@endsection <!-- закрываем директиву секции контента -->

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html