如何验证 Youtube Url validateOnly Laravel Livewire
How to validate Youtube Url validateOnly Laravel Livewire
我正在尝试验证 youtube 地址是否已放入 youtube url,我不希望它是严格的,但至少可以验证它没有放置任何内容.我正在尝试自定义验证,但我没有发现它们是如何完成的,你能帮帮我吗?
我想实现这样的东西:
$rx = '~
^(?:https?://)? # Optional protocol
(?:www[.])? # Optional sub-domain
(?:youtube[.]com/watch[?]v=|youtu[.]be/) # Mandatory domain name (w/ query string in .com)
([^&]{11}) # Video id of 11 characters as capture group 1
~x';
$has_match = preg_match($rx, $url, $matches);
我使用实时验证如下:
public function updated($field)
{
$this->validateOnly($field, [
'name' => 'required|max:255|min:3',
'last_name' => 'required|max:255|min:3',
'password' => 'min:6|required',
'password_confirmation' => 'same:password',
'email' => 'unique:App\User,email|required|email',
]);
}
您可以添加自定义验证吗?我将不胜感激一个如何完成它的例子。感谢您花时间来咨询我。
您需要为此使用 regex
验证规则:
$rx = '~
^(?:https?://)? # Optional protocol
(?:www[.])? # Optional sub-domain
(?:youtube[.]com/watch[?]v=|youtu[.]be/) # Mandatory domain name (w/ query string in .com)
([^&]{11}) # Video id of 11 characters as capture group 1
~x';
$this->validateOnly($field, [
'youtube_url' => "regex:$rx",
]);
添加自定义规则:
public function passes($attribute, $value)
{
return (bool) preg_match('/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/',$value);
}
验证:
'video' => new RuleYoutube,
接受的答案可能会接受无效的 Youtube links,例如这个 link https://www.xxx.be/watch?v=wxQuTsgMw3Y
将通过验证!
你可以使用这个:
'input_name' => [
'required',
'url',
function ($attribute, $value, $fail) {
if (!preg_match('/(youtube.com|youtu.be)\/(watch)?(\?v=)?(\S+)?/', $value)) {
$fail(trans("general.not_youtube_url", ["name" => trans("general.url")]));
}
},
],
我正在尝试验证 youtube 地址是否已放入 youtube url,我不希望它是严格的,但至少可以验证它没有放置任何内容.我正在尝试自定义验证,但我没有发现它们是如何完成的,你能帮帮我吗?
我想实现这样的东西:
$rx = '~
^(?:https?://)? # Optional protocol
(?:www[.])? # Optional sub-domain
(?:youtube[.]com/watch[?]v=|youtu[.]be/) # Mandatory domain name (w/ query string in .com)
([^&]{11}) # Video id of 11 characters as capture group 1
~x';
$has_match = preg_match($rx, $url, $matches);
我使用实时验证如下:
public function updated($field)
{
$this->validateOnly($field, [
'name' => 'required|max:255|min:3',
'last_name' => 'required|max:255|min:3',
'password' => 'min:6|required',
'password_confirmation' => 'same:password',
'email' => 'unique:App\User,email|required|email',
]);
}
您可以添加自定义验证吗?我将不胜感激一个如何完成它的例子。感谢您花时间来咨询我。
您需要为此使用 regex
验证规则:
$rx = '~
^(?:https?://)? # Optional protocol
(?:www[.])? # Optional sub-domain
(?:youtube[.]com/watch[?]v=|youtu[.]be/) # Mandatory domain name (w/ query string in .com)
([^&]{11}) # Video id of 11 characters as capture group 1
~x';
$this->validateOnly($field, [
'youtube_url' => "regex:$rx",
]);
添加自定义规则:
public function passes($attribute, $value)
{
return (bool) preg_match('/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/',$value);
}
验证:
'video' => new RuleYoutube,
接受的答案可能会接受无效的 Youtube links,例如这个 link https://www.xxx.be/watch?v=wxQuTsgMw3Y
将通过验证!
你可以使用这个:
'input_name' => [
'required',
'url',
function ($attribute, $value, $fail) {
if (!preg_match('/(youtube.com|youtu.be)\/(watch)?(\?v=)?(\S+)?/', $value)) {
$fail(trans("general.not_youtube_url", ["name" => trans("general.url")]));
}
},
],