【问题标题】:Laravel - how to get a parameter of an object in a request fileLaravel - 如何在请求文件中获取对象的参数
【发布时间】:2017-02-09 20:00:33
【问题描述】:

我正在使用 Laravel 5.3,我想在请求文件中进行查询,我为用户可以编辑其频道的表单设置了一些验证规则。在该文件中,我想进行如下查询:

$channelId = Auth::user()->channels()->where('id', $this->id)->get();

这样我就可以获取频道 ID 并将其从规则数组中排除,这就是文件的样子:

public function rules()
    {
        $channelId = Auth::user()->channels()->where('id', $this->id)->get();

        return [
            'name' => 'required|max:255|unique:channels,name,' . $channelId,
            'slug' => 'required|max:255|alpha_num|unique:channels,slug,' . $channelId,
            'description' => 'max:1000',
        ];
    }

我不确定如何获取请求文件中正在更新的对象的channel id

【问题讨论】:

  • 您的意思是您不知道如何获取随表单发送的 id(您在示例中使用 $this->id)?
  • 是的,没错
  • 您在 Request 对象中,这意味着您可以使用它的内置函数来检索输入:$this->input()、$this->input('id')。阅读更多关于laravel.com/docs/5.3/requests#retrieving-input

标签: php laravel validation eloquent


【解决方案1】:

为此我使用了模型,在请求文件中我们可以通过 $this 和模型名称访问该对象,使用 this 我们可以访问所有属性,所以如下更改。

$channel = Auth::user()->channels()->where('id', $this->channel->id))->first();

但我不是这样做的,我直接在下面的规则中使用$this->channel->id

return [
        'name' => 'required|max:255|unique:channels,name,' . $this->channel->id,
        'slug' => 'required|max:255|alpha_num|unique:channels,slug,' . $this->channel->id,
        'description' => 'max:1000',
    ];

【讨论】:

    【解决方案2】:

    我为此使用了一个会话,我在编辑函数中存储了一个密钥,然后在我的查询中的请求文件中检索它,现在它可以工作了,用户无法以以下形式操作它:

    $channel = Auth::user()->channels()->where('id', session('channel_id'))->first();
    

    【讨论】:

      【解决方案3】:

      当在Requestobject 内部时,当您有一个名为“id”的输入时,您可以通过调用$this->input("id") 正确地访问@Silwerclaw 的输入。

      在物体之外,可以使用门面:Request::input("id")

      【讨论】:

      • 问题是我在表单中没有带有 id 的输入,我想知道是否有办法避免这样做,因为我想避免用户进行操作身份证?
      • 是的,您可以像这样进行隐藏输入:<input type="hidden" name="id" value="<the id>">
      • 从哪里获取要提交的ID?如果您要进行隐藏输入,您将如何将 ID 放置在 value 属性中?
      • 不,我想避免隐藏输入,以避免用户在表单中操作它的任何可能性
      • 我明白这一点。但是您从哪里获取您正在谈论的ID?它来自哪里?
      猜你喜欢
      • 2020-02-12
      • 2015-11-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多