laravel - 从控制器中的 url 获取 id 值并显示关联 laravel 的值
问题描述
我正在尝试使用 laravel jetstream 和 livewire 创建一个票务管理系统。在用户页面中有一个表格,其中包含用户创建的所有票证。当用户点击按钮打开一个特定的工单时,它应该传递工单的 id 并重定向到另一个页面,在那里它接收他单击的工单的数据,如标题、消息等。
id 是通过 url 传递的,但我的主要问题是,每当我尝试在视图中显示该数据时,什么都没有显示,也没有错误。我认为我的控制器可能有问题。
这是我的路线:
Route::get('tickets.answers/{id}', [TicketsController::class, 'answers']);
重定向到该特定工单的按钮:
<a href="{{ url('tickets.answers' . '/'. $ticket->id ) }}" > <x-jet-secondary-button >
See Answer
</x-jet-secondary-button></a>
答案控制器:
public function render(Request $request)
{
$tickets = Ticket::where('id', $request->url('id'));
return view('livewire.tickets.answers', [
'tickets' => $tickets,
]);
}
以及我如何尝试在刀片中显示:
@foreach($tickets as $key => $ticket)
<!-- This example requires Tailwind CSS v2.0+ -->
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
<div class="px-4 py-5 sm:px-6">
<h3 class="text-lg leading-6 font-medium text-gray-900">
Ticket nº {{$ticket->id}} - {{$ticket->title}}
</h3>
</div>
</div>
@endforeach
解决方案
在你的TicketsController
你可以拿id
这样的
public function answer(Request $request, int $id)
{
// Use the find() method, instead of where(), when searching for the primary key
$tickets = Ticket::find($id);
// .. more
}
在你的路由文件中你指定一个answer
方法,所以在你的TicketsController
.
// See how to name a route
Route::get('tickets.answers/{id}', [TicketsController::class, 'answers'])->name('tickets.answers');
然后在您的视图中使用命名路由,如下所示:
<a href="{{ route('tickets.answers', ['id' => $ticket->id]) }}">
你可以在Laravel 文档中看到一个类似的例子。
推荐阅读
- scala - scala play-json 中动态 json 的读取器和写入器
- hpc - 使用 condor 时如何从环境变量中获取交互式作业的作业 ID?
- javascript - 在定义函数时访问实例的属性
- swift - 数组的内部过滤不会快速过滤
- database-restore - 恢复外部硬盘驱动器上的数据库
- django - 根据另一个字段设置 Django 字段默认值
- sql - 如何在 SQL 中获取最近日期之间的天数?
- python - 如何在一个 div 中抓取多个样式?
- python - 尝试保存文本时出现 tclError
- postgresql - 我有一个卷挂载到 Kubernetes pod 中,该卷有 644 权限,但容器用户是非 root 用户,我可以强制挂载为 777 吗?