php - 如何在 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');
}
}
解决方案
您正在访问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>
为什么您的编辑按钮在删除表单内?这是没有意义的。将其保留在表格之外。
推荐阅读
- c++ - c ++ lambda已使用但未初始化
- ubuntu - `/sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max`在重新连接到机器(ssh)后改变
- python - 将复杂条件分解为子条件 - Python
- javascript - 在 UI 上解析上传的 CSV 文件(约 8GB)时将非常大的 JSON 对象存储在内存中
- python - 在snakemake中缺少所有规则的输入文件
- shell - jq 比较两个文件并以文本格式输出差异
- sql-server - .NET Core Entity Framework 让用户运行存储过程
- java - 如何以日期类型的 yyyy-MM-dd 格式转换日期?
- c# - NullException:值不能未定义。参数名称:来源
- azure - 将 spark 数据帧从 azure databricks 写入 S3 会导致 java.lang.VerifyError: Bad type on operand stack 错误