Laravel 2 отправить кнопки в той же форме - PullRequest
0 голосов
/ 25 мая 2019

Я строю CRUD с Laravel. Каждая категория имеет много вложений, и каждое вложение относится к категории.

В представлении category.edit я хочу дать пользователю возможность удалять вложения (по отдельности) из категории. Я попробовал этот метод, но он не работал:

Регистрация маршрута для вложения:

Route::group(['middleware' => ['auth']], function () {
    Route::delete('attachment/{id}', 'AttachmentController@delete')->name('attachment');    
});

Обработка удаления при помощи метода AttachmentController @ delete:

class AttachmentController extends Controller
{
    public function delete($id) {

        $toDelete = Attachment::findOrFail($id);
        $toDelete->delete();
        return redirect()->back();
    }
}

В CategoryController (метод правки) я выбираю вложения, связанные с каждой категорией, которая будет отображаться внутри представления:

public function edit($category)
{
    $wildcard = $category;
    $category = Category::findOrFail($wildcard);
    $attachments = App\Category::findOrFail($wildcard)->attachments()->get()->toArray();
    return view('category.edit', [
        'category' => $category,
        'attachments' => $attachments
    ]);
}

В представлении я отображаю вложение и кнопку для удаления. Я полностью осознаю ошибку, связанную с наличием формы внутри другой формы, тем не менее я не знаю другого подхода к отправке этого запроса на удаление.

// update Category form    
@foreach ($attachments as $attachment)
        <div class="row">
            <div class="col-4">
                <img style="width: 100%;" src={{ $attachment['url'] }} alt="">
            </div>
            <div class="col-4">
                <div>
                    <p class="general_par general_url">{{ $attachment['url'] }}</p>
                </div>
            </div>
            <div class="col-4">
                <form action="{{ route('attachment', $attachment['id']) }}" method="POST">
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="btn btn-danger">Delete Image</button>
                </form>
            </div>
        </div>
        <hr>                  
    @endforeach
// end of update Category form

Должен ли я создать метод deleteAttachment внутри CategoryController? Если да, как я могу отправить запрос на удаление? Кроме того, если какая-либо другая Модель в будущем будет иметь вложения, должен ли я создать метод deleteAttachment внутри каждого контроллера? Это громоздко. Заранее спасибо

1 Ответ

0 голосов
/ 26 мая 2019

, если вы не любите использовать форму, тогда используйте тег:

<a class="btn btn-danger" href="{{ route('attachment', $attachment['id']) }}">Delete Image</a>

и переопределите маршрут к Route::get(...)

(или, возможно, используйте ajax для метода POST, если этотребуется)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...