在 Laravel 中验证多个用户生成的标签

Posted

技术标签:

【中文标题】在 Laravel 中验证多个用户生成的标签【英文标题】:Validating multiple user generated tags in Laravel 【发布时间】:2017-05-26 18:43:44 【问题描述】:

在我的网站上,我允许用户上传图片。除了这些图片,用户还可以为图片添加标签。

在这里找到小提琴演示: 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 构造的东西来检查我是否不超过标签数量限制,然后针对字母数字之类的东西逐一验证它们?

【问题讨论】:

【参考方案1】:

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

IE&lt;input type="text" name="tag[]"&gt;

要获得此信息,您必须寻找从 javascript 标签插件中获取信息的方法。大多数标签插件都有这个方法,或者会为你生成输入字段。

在 Laravel 中,您可以验证数组,请参阅 https://laravel.com/docs/5.3/validation#validating-arrays

你的最后一行是'tag.*' =&gt; 'max:20|alpha_num',

【讨论】:

谢谢!尽管切换到 select2 插件,您的回答还是有很大帮助。【参考方案2】:

或者你可以使用在这个 laracast 系列剧集中讨论的 select2 插件...... https://laracasts.com/series/laravel-5-fundamentals/episodes/24

【讨论】:

这并没有直接回答我的问题,但我最终接受了你的回答,所以我想我会接受你的。谢谢。

以上是关于在 Laravel 中验证多个用户生成的标签的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 验证 - 逗号分隔的字符串输入为数组

如何在 laravel 身份验证期间附加到用户创建多个复选框

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

Laravel:过滤存在多个标签的用户

如何进行多个身份验证:laravel 中的用户、管理员、卖家 [关闭]

Laravel 4 中的多个身份验证会话