我有2个社交帐户输入,我需要登录此社交帐户。我需要在此输入中拒绝写入链接。我怎么能这样做?
$this->validate($request, [
'google_plus' => 'required|not:url',
'twitter' => 'required|not:url',
]);
not:url
无法正常工作..
示例:我需要拒绝链接:https://twitter.com/loginUser并且只允许:loginUser
答案 0 :(得分:0)
您可以使用regex
验证程序或创建一个custom validator来实施您之后的规则。
例如,regex:^https://twitter.com/.+
之类的内容会验证以该域开头的输入。
答案 1 :(得分:0)
验证人的目的是在不符合要求的情况下停止提交。根据你所描述的内容,你不想停止提交,只是修剪它。
在这种情况下,不要在该字段上加上任何规则。将其保存到数据库时,请使用preg_replace:
$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
$newValue = preg_replace($pattern, "", $request->twitter);
答案 2 :(得分:0)
首先,按照说明进行操作 laravel validation, custom validation 创建一个名为NotUrl的新规则,如下所示:
.as-console-wrapper { max-height: 100% !important; top: 0; }
然后像这样验证:
class NotUrl implements Rule
{
public function passes($attribute, $value)
{
return !filter_var($value, FILTER_VALIDATE_URL);
}
public function message()
{
return 'The :attribute must not be a complete URL.';
}
}