我有一个上传文件的laravel应用程序。如果文件存在,我需要检查相关表。我的用户模型hasmany(assets)文件信息位于assets表中。我试图将该名称从表中拉出来并根据dropzone中上传的文件进行验证。
这是我的dropzone脚本:
Dropzone.options.dropzoneUpload = {
paramName: "asset", // The name that will be used to transfer the file
maxFilesize: 2, // MB
accept: function(file, done) {
if (file.name == "{{$filename}}") {
done("Naha, you don't.");
}
else { done(); }
}
};
我为上传页面生成视图的功能如下所示
public function index()
{
$filename = Auth::user()->assets->name;
return view('upload.index')->with('filename', $filename);
}
我在文件名变量
中的名称上返回了一个错误Undefined property: Illuminate\Database\Eloquent\Collection::$name
我不知道如何从表中访问文件名并使用视图中的脚本进行验证。每个用户在表中都有多个文件名。
Pre dropzone我能够在我的控制器中使用它
foreach($userAssets as $asset)
{
if($asset->name == $filename)
{
return redirect('upload')->with('errornotice', 'A file with that name already exist');
}
}
但这不会在剧本中发挥作用。
答案 0 :(得分:0)
既然你自己说User
有多个Assets
,那么assets->name
应该打印什么?其中name
Asset
?由于你有许多这些并且user->asset
正在返回一个Collection,你可以迭代该集合,从所有Asset name
中构造一个JSON数组并将其注入你的JS。然后执行JavaScript for
/ each
以检查数组的所有元素。这是一个很弱的验证,任何用户都可以在提交之前编辑JS。如果文件名不存在对您来说很重要,请考虑某种服务器端验证。