在laravel中,我创建了一个表单。目前,我正在努力验证此表单的输入字段。当我尝试验证某些输入字段而另一些输入字段未验证时,我遇到了一个问题。例如,应该验证邮件,但不能验证catering_name(不必填写此字段,可以选择)
我尝试了所有可以找到的验证方法。我不断收到相同的错误。
Method Illuminate\Validation\Validator::validatePhone does not exist.
我想我缺少了一些东西。
我尝试过:
下面,您将找到所有应输入数据库的数据。 如果删除验证部分,则数据已插入数据库中。我认为问题在于我如何进行验证。感谢您的帮助。
$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();
答案 0 :(得分:1)
很遗憾,phone
不是默认验证之一。您可以尝试以下操作:
[
'telefone' => 'required|regex:/(01)[0-9]{9}/',
]
您可以看到Laravel here给出的可用验证列表。 有很多更复杂的选择,具体取决于它对您的重要性。
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.';
}
}