【发布时间】:2017-09-24 03:48:41
【问题描述】:
我正在尝试实现 Laravel 的一项新功能“自定义验证规则”,但遇到了以下错误:
Object of class Illuminate\Validation\Validator could not be converted to string
我正在按照此视频中的步骤进行操作: New in Laravel 5.5: Project: Custom validation rule classes (10/14)
这是对 Mailgun API 的电子邮件验证工具的尝试。
请求的简单表单:名字、姓氏、公司、电子邮件和消息
这是我的代码:
web.php
Route::post('contact', 'StaticPageController@postContact');
StaticPageController.php
use Validator;
use App\Http\Validation\ValidEmail as ValidEmail;
public function postContact(Request $request) {
return Validator::make($request->all(), [
'firstname' => 'required|max:90',
'lastname' => 'required|max:120',
'company' => 'max:120',
'email' => [
'required', 'string', 'max:255',
new ValidEmail(new \GuzzleHttp\Client)
],
'message' => 'required',
]);
}
ValidEmail.php
<?php
namespace App\Http\Validation;
use Illuminate\Contracts\Validation\Rule;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client as Guzzle;
class ValidEmail implements Rule
{
protected $client;
protected $message = 'Sorry, invalid email address.';
public function __construct(Guzzle $client)
{
$this->client = $client;
}
public function passes($attribute, $value)
{
$response = $this->getMailgunResponse($value);
}
public function message()
{
return $this->message;
}
protected function getMailgunResponse($address)
{
$request = $this->client->request('GET', 'https://api.mailgun.net/v3/address/validate', [
'query' => [
'api_key' => env('MAILGUN_KEY'),
'address' => $address
]
]);
dd(json_decode($request->getBody()));
}
}
期待
我期待看到这样的东西:
{
+"address": "test@e2.com"
+"did_you_mean": null
+"is_disposable_address": false
+"is_role_address": false
+"is_valid": false
+"parts": {
...
}
}
非常感谢任何帮助。我一直试图让这个简单的例子工作两个多小时。希望有我经验的人可以提供帮助!
【问题讨论】:
-
我搞定了,你还需要这个吗?
标签: laravel validation mailgun