首页 > 解决方案 > Laravel Nova 在 newModel() 中创建一个带有动作的模型

问题描述

我在带有 Nova 3.22 的 Laravel 8 中。我有一个表,其中包含一个字段,该字段在数据库事务中使用序列号自动填充,并且为了强制我CreateProduct定义了一个包含该资源创建的操作。在任何需要创建该模型的新实例的地方,我都会调用动作,并且我需要在 Nova 中执行相同的操作。我找到了newModel()覆盖的方法,但它有两个问题。

    public static function newModel()
    {
        $instance = new CreateProduct(
            new \App\Models\Sku(), //Placeholder
            \App\Models\Product::STATUS_DEFAULT,
            null
        );

        return $instance->handle();
    }

首先,这个方法被调用create(显示输入表单)以及store存储操作。这意味着我最终会收到两次调用我的操作,在我的数据库中创建虚假序列号。如果我不这样覆盖newModel,它会创建完全没有序列号的记录。我可以选择 0 或 2 个电话,但我只想要 1 个!

第二个问题是相关的;显示表单时,它会调用newModel,但我必须将占位符数据用于操作所需的参数,因为这些字段(显然)尚未设置,但我需要第二次用实际提交的值替换这些占位符,我不确定我会怎么做。

我觉得我一定错过了一些东西——有没有类似的东西newModel,但这只是为了store手术而需要的吗?

标签: laravellaravel-nova

解决方案


推荐阅读