首页 > 解决方案 > 如何在 Laravel 中使用 @can 将变量从视图发送到策略

问题描述

如果策略返回true,我正在使用@can策略来显示一个按钮,并且我想将变量发送$offer到策略这里的问题是变量$offer不在正常情况下,因为它在另一个的foreach循环中变量,我将解释更多:

他们是一个循环消息的foreach,每条消息都有角色,消息可以是用户或管理员发送的消息,也可以是管理员的提议,通过使用数组内部的数组和最后我必须将数组变量发送到策略

我试图$offer[($message->content - 1)]像那样发送变量,但它不起作用。

我也尝试替换@canby@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;
}

它就像发送类而不是变量一样工作

标签: laravellaravel-5

解决方案


根据您的描述,以下应该有效。

// 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;
}

推荐阅读