1

Questionmodel &之间的关系Choice是多对多的。

Nova/Question

public function fields(Request $request)
{
    return [
        ...
        BelongsToMany::make('Choices')
    ]
}

显示在屏幕下方

在此处输入图像描述

我想从视图中隐藏视图和编辑选项。只允许用户附加/分离选择。

我尝试QuestionPolicy使用以下方法创建,但没有成功。如果我使用ChoicePolicy's update&create方法,它将隐藏Choice资源中的查看和编辑选项。

public function updateChoice(User $user, Question $question)
{
    return false;
}

如何实现从关系中隐藏视图和编辑选项?

更新

Question模型

class Question extends Model
{
    ...
    /**
     * The choices that belong to the question.
     */
    public function choices()
    {
        return $this->belongsToMany('App\Choice');
    }
}

Choice模型

class Choice extends Model
{
    /**
     * The questions that belong to the choice.
     */
    public function questions()
    {
        return $this->belongsToMany('App\Question');
    }
}
4

4 回答 4

1

在您的 QuestionPolicy 中定义

public function attachChoice(User $user, Question $question, Choice $choice)
{
   return ! $question->choices->contains($choice);
}

取自这个github 问题,请查看更多详细信息

于 2020-03-16T05:40:34.640 回答
0

你可以在你的政策中返回这个,你的更新也是如此

 public function view(User $user, Survey $survey)
 {
     return false
 }
于 2018-09-27T19:29:48.437 回答
0

我认为您需要将以下代码放入您的 QuestionPolicy :

public function attachAnyChoice()
{
   return false;
}

希望这有帮助。 https://nova.laravel.com/docs/1.0/resources/authorization.html#authorizing-attaching-detaching

于 2019-01-18T09:09:19.830 回答
-1

希望对你有帮助

public function fields(Request $request)
{
     return [
        ...
        BelongsToMany::make('Choices')->except('edit','view');
     ]
}
于 2018-09-26T07:32:46.437 回答