laravel - 如何在 Laravel 中使用 @can 将变量从视图发送到策略
问题描述
如果策略返回true,我正在使用@can
策略来显示一个按钮,并且我想将变量发送$offer
到策略这里的问题是变量$offer
不在正常情况下,因为它在另一个的foreach循环中变量,我将解释更多:
他们是一个循环消息的foreach,每条消息都有角色,消息可以是用户或管理员发送的消息,也可以是管理员的提议,通过使用数组内部的数组和最后我必须将数组变量发送到策略
我试图$offer[($message->content - 1)]
像那样发送变量,但它不起作用。
我也尝试替换@can
by@if($offer[($message->content - 1)]->the_status != 'paid')
并且它有效,但我需要一个政策,因为我会添加其他条件
这是罐头:
@can('accept', $offer[($message->content - 1)])
<button></button>
@include("layouts.modals.accept_offer")
@else
Paid
@endcan
策略代码是:
public function accept(User $user, Payments_offer $offer)
{
if($offer->the_status == 'paid')
{
return false;
}
return $user->id == $offer->user_id;
}
它就像发送类而不是变量一样工作
解决方案
根据您的描述,以下应该有效。
// View
@can('accept', $offer[id])
<button></button>
@include("layouts.modals.accept_offer")
@else
Paid
@endcan
// Policy
public function accept(User $user, Payments_offer $offer)
{
if($offer->the_status == 'paid')
{
return false;
}
return $user->id == $offer->user_id;
}
推荐阅读
- python-3.x - 我已经下载了 python 3.8.5,但我看到的仍然是 3.7.4 版本。为什么?
- android - AlarmManager 未触发通知
- javascript - 打字稿:遍历复选框(由ngfor制作)并打印每个复选框的值
- java - PostMapping 逻辑错误
- swift - SwiftUI 隐藏 UIKit UINavigationController(rootViewController: _) 的导航栏
- flutter - 制作元素之间没有间隙的网格视图
- java - 通过 Wi-Fi Direct 发送的图像已损坏
- xml - 通过 XML 解析器推送数据是否会根据本规范执行验证?
- sql-server - 为什么删除行在 SQL Server 中似乎很慢?
- go - 去安装复制权限被拒绝