我用最新的背包运行Laravel 9。我一直试图在我的表单中添加一个文件上传字段,但是我遇到了一些问题。我在CRUD控制器中添加了以下内容:
protected function setupCreateOperation()
{
CRUD::setValidation(BuildRequest::class);
// CRUD::field('id');
CRUD::addField([ // Upload
'name' => 'firmware',
'label' => 'Firmware-file',
'type' => 'upload',
'upload' => true,
'disk' => 'uploads',
]);
}此外,还在我的Model类中添加了以下mutator:
public function setFirmwareAttribute($value)
{
dd();
$attribute_name = "firmware";
$disk = "public";
$destination_path = "folder_1/subfolder_1";
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
}我还有一个名为“固件”的数据库列来保存文件的路径。我的问题是,突变者似乎从来没有被召唤过。该文件也永远不会放在适当的文件夹中。我还会得到以下错误:
SQLSTATEHY000:一般错误: 1364字段‘固件’没有默认值
我在暗示我的固件字符串在创建时没有被填充。在迁移中使固件-列为空可以修复此错误,但在试图上载文件时,该条目仍然为"NULL“。我还添加了一个dd();来查看mutator是否被输入,但情况似乎并非如此。我还尝试过修改Mutator语法,使其与Laravel 9兼容,但这也没有帮助。另外,在从Laravel 8到9的迁移指南中,我没有发现任何更新mutator函数的地方,所以我假设新的mutator语法是向后兼容的。知道我在这里错过了什么吗?
编辑:我用Laravel 9更新了我的变形器,其行为完全相同:
protected function firmware(): Attribute
{
dd();
return Attribute::make(
set: function ($value) {
$attribute_name = "firmware";
$disk = "public";
$destination_path = "folder_1/subfolder_1";
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
},
);
}发布于 2022-04-09 12:04:46
您应该在模型的$fillable属性中定义固件属性,以使其具有可分配的质量。
https://stackoverflow.com/questions/71784357
复制相似问题