Я создал несколько новых правил проверки для своего приложения Laravel, следуя документам Laravel https://laravel.com/docs/5.6/validation#custom-validation-rules,, однако, когда я пытаюсь зарегистрировать правила в моем массиве правил пользовательских запросов, выдается ошибка:
#message: "trim() expects parameter 1 to be string, object given"
#code: 0
#file: "/Users/ari/Projects/dps/sites/acg/vendor/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php"
#line: 217
#severity: E_WARNING
Мое пользовательское правило - NotContainsEmail.php:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class NotContainsEmail implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return (strpos($value, '@') !== false);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'This field cannot contain an email address.';
}
}
Мой запрос - QuoteRespondRequest:
<?php namespace Client\Http\Requests\Quotes;
use App\Rules\NotContainsEmail;
use Client\Http\Requests\FormRequest;
class QuoteRespondRequest extends FormRequest
{
public function rules()
{
return [
'help' => ['string', 'nullable', new NotContainsEmail],
'description' => ['string', 'nullable', new NotContainsEmail],
'community' => ['string', 'nullable', new NotContainsEmail],
'funding' => ['string', new NotContainsEmail],
];
}
}
Я смущен ошибкой, поскольку документация Laravel явноутверждает, что я могу пройти через объект, но Illuminate\Validation\ValidationRuleParser.php@217
явно не может обрабатывать объекты.
Где я ошибся?