【问题标题】:Method Illuminate\Http\Request::isDirty does not exist. Laravel方法 Illuminate\Http\Request::isDirty 不存在。拉拉维尔
【发布时间】:2022-01-06 14:00:55
【问题描述】:

我正在使用 voyager 管理面板。我想检查提交表单时更改的属性。我正在使用 isDirty()getDirty() 但这不起作用。 显示错误

方法 Illuminate\Http\Request::isDirty 不存在。

有时会显示此错误。

在字符串上调用成员函数 isDirty()

更新控制器

public function update(Request $request, $id)
{
    $slug = $this->getSlug($request);

    $dataType = Voyager::model('DataType')->where('slug', '=', $slug)->first();

    // Compatibility with Model binding.
    $id = $id instanceof \Illuminate\Database\Eloquent\Model
        ? $id->{$id->getKeyName()}
        : $id;

    $model = app($dataType->model_name);
    $query = $model->query();
   
    $data = $query->findOrFail($id);

    $this->insertUpdateData($request, $slug, $dataType->editRows, $data);

    // That part is showing an error
    dd($request->isDirty(['status']));

    return $redirect->with([
        'message'    => __('voyager::generic.successfully_updated')." {$dataType->getTranslatedAttribute('display_name_singular')}",
        'alert-type' => 'success',
    ]);
}

【问题讨论】:

  • 模型脏了,也就是变了。请求不是。
  • 属性改变应该用什么?
  • 您必须在更改了属性的模型实例上调用该方法
  • $data->isDirty('status') 应该在之前保存数据。
  • 谁能写下代码让我容易理解。

标签: php laravel model controller voyager


【解决方案1】:

请求不会显示结果,它仅适用于模型。所以我使用 $data 而不是 $request。我必须在数组中显示它。像这样。

$data = $query->findOrFail($id);
$data->status  = $request->status;
dd($data->isDirty('status'));

我在我身边工作。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2017-02-07
    • 2020-03-11
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2021-01-15
    相关资源
    最近更新 更多