0
LaravelアプリケーションでSwiftMailerを使用してSMTPサーバーの設定を検証しようとしています。LaravelはSMTPサーバーの設定を確認します
私の主な問題は、SMTPサーバーの検証に失敗した場合、ユーザーにエラーメッセージのあるフォームに返信したいのと同じ方法で$this->validate()
が返されるようにすることです。 $this->validate()
は何after()
コールバックを持っていないよう
public function update($id)
{
$this->validate(request(), [
"name" => "required|unique:email_servers,name,$id",
"address" => "required|unique:email_servers,address,$id",
"username" => "required",
"password" => "nullable|confirmed",
"security" => "nullable|exists:email_securities,value",
"host" => "required",
"port" => "required",
])->after(function ($validator) {
try{
if (request()->input('security')) {
$transport = Swift_SmtpTransport::newInstance(request()->input('host'), request()->input('port'), request()->input('security'));
}
else {
$transport = Swift_SmtpTransport::newInstance(request()->input('host'), request()->input('port'));
}
$transport->setUsername(request()->input('username'));
$transport->setPassword(request()->input('password'));
$mailer = \Swift_Mailer::newInstance($transport);
$mailer->getTransport()->start();
}
catch (Swift_TransportException $e) {
$validator->errors()->add('transport_exception', $e->getMessage());
}
catch (Exception $e) {
$validator->errors()->add('exception', $e->getMessage());
}
});
$email_server = EmailServer::findOrFail($id);
$email_server->update(array_filter(request()->all()));
activity()->by(auth()->user())->on($email_server)->withProperties($email_server)->log('Updated Email Server');
request()->session()->flash('status', 'Email Server updated!');
return redirect()->route('backend.email_servers');
}
今、明らかにこれは動作しません:あなたは私がやろうとしているものを見ることができるように
は、ここで同じサンプルコードです。
私はこの方法を作って、Validator::make
を使用すると$this->validate()
と同じように動作するようにしますか?