Правило mac_address
Правило mac_address используется в валидации форм Laravel
для проверки, что переданное значение является корректным
MAC-адресом (Media Access Control). Правило принимает строку
и проверяет её соответствие формату MAC-адреса.
Синтаксис
<?php
use IlluminateSupportFacadesValidator;
Validator::make($data, [
'field' => 'mac_address'
]);
?>
Пример
Давайте проверим поле 'mac' на соответствие
стандартному формату MAC-адреса:
<?php
use IlluminateSupportFacadesValidator;
$data = ['mac' => '00:1A:2B:3C:4D:5E'];
$rules = ['mac' => 'mac_address'];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
echo "MAC-address is valid";
} else {
echo "MAC-address is invalid";
}
?>
Результат выполнения кода:
"MAC-address is valid"
Пример
Правило mac_address поддерживает различные форматы
записи MAC-адресов. Давайте проверим несколько вариантов:
<?php
use IlluminateSupportFacadesValidator;
$macs = [
'00:1A:2B:3C:4D:5E',
'00-1A-2B-3C-4D-5E',
'001A.2B3C.4D5E',
'00:1A:2B:3C:4D:5G',
'00-1A-2B-3C-4D'
];
$rules = ['mac' => 'mac_address'];
foreach ($macs as $mac) {
$data = ['mac' => $mac];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
echo $mac . " is valid";
} else {
echo $mac . " is invalid";
}
}
?>
Результат выполнения кода:
"00:1A:2B:3C:4D:5E is valid"
"00-1A-2B-3C-4D-5E is valid"
"001A.2B3C.4D5E is valid"
"00:1A:2B:3C:4D:5G is invalid"
"00-1A-2B-3C-4D is invalid"
Пример
Использование правила mac_address в классе
FormRequest для валидации входящего запроса:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class MacAddressRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'mac' => 'required|mac_address',
'device' => 'required|string|max:255'
];
}
public function messages(): array
{
return [
'mac.mac_address' => 'The MAC address is not valid',
'mac.required' => 'The MAC address is required'
];
}
}
?>
Пример
Валидация MAC-адреса с использованием массива правил и дополнительной проверки:
<?php
use IlluminateSupportFacadesValidator;
$data = [
'network' => [
'mac' => 'AA:BB:CC:DD:EE:FF',
'type' => 'ethernet'
]
];
$rules = [
'network.mac' => 'required|mac_address',
'network.type' => 'required|in:ethernet,wifi'
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
$errors = $validator->errors();
foreach ($errors->all() as $error) {
echo $error;
}
} else {
echo "All data is valid";
}
?>
Результат выполнения кода:
"All data is valid"