PHP Laravel при отправке почты возвращает ошибку проверки и пустые поля - PullRequest
2 голосов
/ 31 мая 2019

Я создаю laravel -app, и когда я пытаюсь отправить письмо, я получаю ошибку проверки, которую не могу локализовать.

Моя форма выглядит так:

<form method="POST" action="{{ route('help') }}">
   <input type="hidden" name="job" value="{{ $job->id }}">
    @csrf
   <input type="text" placeholder="Name" name="name" required>
   <input type="email" placeholder="Email" name="email" required>
   <input type="tel" pattern="^[0-9-+s()]*$" placeholder="Phonenr." name="phone" required>
   <button type="submit">Send</button>
</form>

и мой контроллер у меня это:

use Validator;
use App\Mail\HelpMail;

class HelpController extends Controller {

   public function __invoke(Request $request) {
      $validator = Validator::make($request->all(), [
        'name' => ['required', 'string'],
        'email' => ['required', 'email'],
        'phone' => ['required'],
        'job' => ['required', 'integer', 'exists:jobs,id'],
      ]);

      ...
   }
}

Затем в моей справочной почте

class HelpMail {
   use Queueable, SerializesModels;

   public $job;
   public $name;
   public $email;
   public $phone;

   public function __construct($data) {
     $this->job = $data['job'];
     $this->name = $data['name'];
     $this->email = $data['email'];
     $this->phone = $data['phone'];
   }

}

Это возвращает ошибку как: name must be filled out, email must be filled out и phone must be filled out.Когда я комментирую проверку, почта проходит, но тогда поля / полезные данные пусты, и я абсолютно не понимаю, почему это происходит, поскольку я использую тот же метод в моей контактной форме.

Что такоеЯ пропал?

1 Ответ

1 голос
/ 31 мая 2019

Таким образом, в вашем случае при использовании фасада вам придется вручную обрабатывать любые ошибки:

$validator = Validator::make($request->all(), [
        'name' => ['required', 'string'],
        'email' => ['required', 'email'],
        'phone' => ['required'],
        'job' => ['required', 'integer', 'exists:jobs,id'],
      ]);

if ($validator->fails()) {
    // either with view, or use response()->json($validator->errors);
    return view('view_name')->withErrors($validator->errors);
} else {
    return view('view_name');
}

Вместо этого вы можете использовать проверку объекта запроса, который вернется к представлению с ошибками.сумка для сообщений в нем:

public function __invoke(Request $request) {
      $request->validate([
        'name' => ['required', 'string'],
        'email' => ['required', 'email'],
        'phone' => ['required'],
        'job' => ['required', 'integer', 'exists:jobs,id'],
      ]);

      ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...