Правило starts_with
Правило starts_with применяется к валидации строковых полей формы и проверяет, что значение начинается с одной из переданных подстрок. Правило принимает один или несколько аргументов - строки, с которых должно начинаться значение. Если значение начинается хотя бы с одной из указанных подстрок, валидация проходит успешно.
Синтаксис
<?php
Validator::make($data, [
'field' => 'starts_with:substring1,substring2,...'
]);
?>
Пример
Давайте проверим, что код страны начинается с 'US' или 'GB':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class CountryController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'code' => 'starts_with:US,GB'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Valid country code']);
}
}
?>
Пример
Проверим, что имя пользователя начинается с 'user' или 'admin':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => 'starts_with:user,admin'
]);
if ($validator->passes()) {
$res = "Username is valid";
} else {
$res = "Username must start with 'user' or 'admin'";
}
return response()->json(['result' => $res]);
}
}
?>
Результат выполнения кода при значении 'user123':
{"result":"Username is valid"}
Пример
Использование правила в классе FormRequest:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class ProductRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'sku' => 'required|starts_with:SKU-,PRD-'
];
}
public function messages()
{
return [
'sku.starts_with' => 'The SKU must start with "SKU-" or "PRD-"'
];
}
}
?>
Пример
Проверим, что телефон начинается с '+1' или '+44':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class PhoneController extends Controller
{
public function validatePhone(Request $request)
{
$validator = Validator::make($request->all(), [
'phone' => 'starts_with:+1,+44'
]);
if ($validator->fails()) {
echo "Validation failed: " . $validator->errors()->first('phone');
} else {
echo "Phone number is valid";
}
}
}
?>
Результат выполнения кода с телефоном '+442071234567':
"Phone number is valid"