Объявление пропусков (строка $ attribute, $ value): bool должен быть совместим с Illuminate \ Contracts \ Validation \ Rule :: pass ($ attribute, $ value) - PullRequest
0 голосов
/ 01 июня 2018

Я создал пользовательское правило проверки

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Exception;

class ValidFoo implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes(string $attribute, $value): bool
    {
        if (!$foo) {
            return false;
        }

        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message(): string
    {
        return 'The foo you \'ve provided is not valid.';
    }
}

Однако, когда я пытаюсь отправить форму, я получаю эту ошибку

Symfony\Component\Debug\Exception\FatalErrorException (E_UNKNOWN)
Declaration of App\Rules\ValidFoo::passes(string $attribute, $value): bool must be compatible with Illuminate\Contracts\Validation\Rule::passes($attribute, $value)

Это интерфейс правила Laravel

namespace Illuminate\Contracts\Validation;

interface Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value);

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message();
}

1 Ответ

0 голосов
/ 01 июня 2018
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Exception;

class ValidFoo implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if (!$foo) {
            return false;
        }

        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message(): string
    {
        return 'The foo you \'ve provided is not valid.';
    }
}

Это исправленный класс.Ошибка возникает из-за того, что вы используете совпадение типов, но интерфейс не использует подсказку типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...