我想实现的Laravel的新功能“自定义验证规则”之一,我遇到了以下错误:Laravel自定义验证 - Mailgun API
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', '[email protected]');
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": "[email protected]"
+"did_you_mean": null
+"is_disposable_address": false
+"is_role_address": false
+"is_valid": false
+"parts": {
...
}
}
任何帮助深表感谢。我一直试图让这个简单的例子现在工作两个多小时。希望有我的经验的人可以帮忙!
我得到它的工作,你还需要吗? – user3253002