验证表单中的所有字段-Laravel

时间:2019-08-01 14:16:31

标签: laravel forms validation

在laravel中,我创建了一个表单。目前,我正在努力验证此表单的输入字段。当我尝试验证某些输入字段而另一些输入字段未验证时,我遇到了一个问题。例如,应该验证邮件,但不能验证catering_name(不必填写此字段,可以选择)

我尝试了所有可以找到的验证方法。我不断收到相同的错误。

Method Illuminate\Validation\Validator::validatePhone does not exist.

我想我缺少了一些东西。

我尝试过:

  • Validator :: make($ request-> ...
  • $ this-> validate(request(),[...
  • $ request-> validate([...

下面,您将找到所有应输入数据库的数据。 如果删除验证部分,则数据已插入数据库中。我认为问题在于我如何进行验证。感谢您的帮助。

 $this->validate(request(), [
        'add_name'              => 'required|min:3',
        'add_mail'              => 'required|email', 
        'name'                  => 'required|min:3',
        'email'                 => 'required|email', 
        'telefone'              => 'numeric|phone', 
        'gsm'                   => 'numeric|phone', 
        'event'                 => 'required|min:3',
        'date_start'            => 'required|date|after:tomorrow',
        'date_end'              => 'required|date|after_or_equal:event_date_start',
        'location'              => 'required|min:3',
        'number'                => 'required',
    ]);

    $event = new Event;

    $event->add_name     = request('add_name');
    $event->add_mail     = request('add_mail');
    $event->name       = request('name');
    $event->email      = request('email');
    $event->telefone   = request('telefone');
    $event->gsm        = request('gsm');
    $event->name         = request('name');
    $event->date_start   = request('date_start');
    $event->date_end     = request('date_end');
    $event->location           = request('location');
    $event->number       = request('number');
    $event->catering           = request('catering');
    $event->catering_name      = request('catering_name');
    $event->remarks            = request('remarks');
    $event->status             = Event::STATUS_0;

    $event->save();

1 个答案:

答案 0 :(得分:1)

很遗憾,phone不是默认验证之一。您可以尝试以下操作:

[
    'telefone' => 'required|regex:/(01)[0-9]{9}/',
]

您可以看到Laravel here给出的可用验证列表。 有很多更复杂的选择,具体取决于它对您的重要性。

  • 有些软件包像Laravel-Phone一样易于插拔。
  • 您可以使用php artisan make:rule phone_number创建自己的自定义validation,然后编辑新的规则:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class PhoneNumber implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        // logic here, most likely some sort of regex.
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be a valid phone number.';
    }
}