首页 > 解决方案 > 如何在 laravel 的弹出框中添加该流派的名称

问题描述

我正在努力做到这一点,以便当我删除列表中的流派时,会出现一个弹出框,要求确认。除了流派的名称之外,我得到了所有这些工作。目前每种类型都是“未定义的”。这应该是一个简单的解决方案,但我是一个试图弄清楚这一点的初学者。

@extends('layouts.template')

@section('title', 'Genres')

@section('main')
    <h1>Genres</h1>
    @include('shared.alert')
    <p>
        <a href="/admin/genres/create" class="btn btn-outline-success">
            <i class="fas fa-plus-circle mr-1"></i>Create new genre
        </a>
    </p>
    <div class="table-responsive">
        <table class="table">
            <thead>
            <tr>
                <th>#</th>
                <th>Genre</th>
                <th>Records for this genre</th>
                <th>Actions</th>
            </tr>
            </thead>
            <tbody>
            @foreach($genres as $genre)
                <tr>
                    <td>{{ $genre->id }}</td>
                    <td>{{ $genre->name }}</td>
                    <td>{{ $genre->records_count }}</td>
                    <td>
                        <form action="/admin/genres/{{ $genre->id }}" method="post" class="deleteForm">
                            @method('delete')
                            @csrf
                            <div class="btn-group btn-group-sm">
                                <a href="/admin/genres/{{ $genre->id }}/edit" class="btn btn-outline-success"
                                   data-toggle="tooltip" style="display: inline;"
                                   title="Edit {{ $genre->name }}">
                                    <i class="fas fa-edit"></i>
                                </a>
                                <button style="display: inline;" type="button" class="btn btn-outline-danger"
                                        data-toggle="tooltip"
                                        data-records="{{ $genre->records_count }}"
                                        title="Delete {{ $genre->name }}">
                                    <i class="fas fa-trash-alt"></i>
                                </button>
                            </div>
                        </form>
                    </td>
                </tr>
            @endforeach
            </tbody>
        </table>
    </div>
@endsection

@section('script_after')
    <script>
        $(function () {
            $('.deleteForm button').click(function () {
                let records = $(this).data('records');
                let name= $(this).data('name');
                let msg = `Delete the genre ${name} ?`;
                if (records > 0) {
                    msg += `\nThe ${records} records of this genre will also be deleted!`
                }
                if(confirm(msg)) {
                    $(this).closest('form').submit();
                }
            })
        });
    </script>
@endsection

这是我的控制器:

<?php

namespace App\Http\Controllers\Admin;

use App\Genre;
use App\Helpers\Json;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class GenreController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //Select all genres and count the records that belong to a genre
        $genres = Genre::orderBy('name')
            ->withCount('records')
            ->get();
        $result = compact('genres');
//        Json::dump($result);
        return view('admin.genres.index', $result);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $genre = new Genre();
        $result = compact('genre');
        return view('admin.genres.create', $result);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request,[
            'name' => 'required|min:3|unique:genres,name'
        ]);

        $genre = new Genre();
        $genre->name = $request->name;
        $genre->save();
        session()->flash('success', "The genre <b>$genre->name</b> has been added");
        return redirect('admin/genres');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Genre  $genre
     * @return \Illuminate\Http\Response
     */
    public function show(Genre $genre)
    {
        return redirect('admin/genres');
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Genre  $genre
     * @return \Illuminate\Http\Response
     */
    public function edit(Genre $genre)
    {
        $result = compact('genre');
//        Json::dump($result);
        return view('admin.genres.edit', $result);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Genre  $genre
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Genre $genre)
    {
        $this->validate($request,[
            'name' => 'required|min:3|unique:genres,name,' . $genre->id
        ]);
        $genre->name = $request->name;
        $genre->save();
        session()->flash('success', 'The genre has been updated');
        return redirect('admin/genres');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Genre  $genre
     * @return \Illuminate\Http\Response
     */
    public function destroy(Genre $genre)
    {

        $genre->delete();
        session()->flash('success', "The genre <b>$genre->name</b> has been deleted");
        return redirect('admin/genres');
    }
}

标签: phplaravel

解决方案


您正在访问let name= $(this).data('name');,但您没有设置name数据属性。所以你变得不确定。只需将其添加到按钮中

<button style="display: inline;" type="button" class="btn btn-outline-danger"
    data-toggle="tooltip" data-records="{{ $genre->records_count }}" title="Delete {{ $genre->name }}" data-name="{{ $genre->name }}">
    <i class="fas fa-trash-alt"></i>
</button>

为什么您的编辑按钮在删除表单内?这是没有意义的。将其保留在表格之外。


推荐阅读