2017-01-11 30 views
1

在我的网站上,我允许用户上传图片。除了这些图像之外,用户还可以为图像添加标签。在Laravel验证多个用户生成的标签

小提琴演示在这里找到: https://jsfiddle.net/cn9nqfj3/4/

我有两个问题,但是。

首先,我怎么能够通过这一点,与其他请求一样?

例如,在我的控制器的验证,我有:

$this->validate($request, [ 
    'title' => 'required|max:40|min:2|string', 
    'mature' => 'required', 
    'categorie' => 'required', 
    'description' => 'string|max:2000', 
    'fileUpload' => 'required|image', 
    'tag' => 'max:20|alpha_num', 
]); 

但如何将标签的工作?

当添加标签,就像这样生成的标记:

<span class="tag"><span class="close">×</span>#tag1</span> 
<span class="tag"><span class="close">×</span>#tag2</span> 

所以我不知道我怎么会甚至可以通过它传递给验证,因为它不是一个规则的表单元素。

第二个问题是验证将如何处理,即使多个标签。

我是否需要类似foreach构造的东西来检查我是否超过了标记数量限制,然后逐个验证它们是否像字母数字和whatnot一样?

回答

2

您需要将输入作为输入数组来输入。

IE <input type="text" name="tag[]">

为了得到这个,你就必须寻找办法来获取信息,你的JavaScript代码的插件。大多数标签插件都有这样的方法,或者为您生成输入字段。

在Laravel可以验证阵列,请参见https://laravel.com/docs/5.3/validation#validating-arrays

你的最后一行将'tag.*' => 'max:20|alpha_num',

+0

谢谢!尽管切换到了select2插件,但您的答案有所帮助。 –