Я создаю приложение laravel
, где я подключаю mailchimp
к контактной форме. Пользователь должен принять условия и имеет возможность получать новостную рассылку, установив флажок. Прямо сейчас, когда пользователь принимает как условия, так и новостную рассылку, форма отправляется успешно, но когда пользователь не устанавливает флажок новостной рассылки, форма не отправляется, и я действительно не знаю, почему.
здесь ввод
<input name="conditions" value="1" type="checkbox" class="custom-control-input" id="applyConditions" required>
<input type="checkbox" name="newsletter" class="custom-control-input" id="contactNewsletterSubscribe">
и мой контроллер:
class ContactController extends Controller
{
public function store()
{
$validator = Validator::make(request()->all(), [
'email' => ['required', 'email'],
'name' => ['required', 'string'],
'phone' => ['string'],
'subject' => ['required', 'string'],
'message' => ['required', 'string'],
'conditions' => ['accepted', 'boolean'],
]);
if ($validator->fails()) {
return response()
->json($validator->messages(), 400);
}
if (request()->has('newsletter')) {
Newsletter::subscribePending(request()->email);
if (!Newsletter::lastActionSucceeded()) {
return response()
->json($validator->messages(), 400);
}
}
Mail::to('my@mail.com')
->send(new ContactUsMessage([
'email' => request()->email,
'name' => request()->name,
'phone' => request()->phone,
'subject' => request()->subject,
'message' => request()->message,
]));
return response()->json('OK', 200);
}
}
Когда я проверяю оба флажка conditions
и newsletter
, данные формы возвращаются:
conditions: 1
newsletter: on
Когда условия приняты, но флажок новостной рассылки снят, данные формы возвращаются:
conditions: 1
newsletter: undefined
Может кто-нибудь сказать мне, что я делаю не так?
EDIT
Я отправляю данные формы с помощью jquery / axios:
if ($('#contact input[name="newsletter"]:checked')) {
formData.append(
"newsletter",
$('#contact input[name="newsletter"]:checked').val()
);
} else {
formData.append(
"newsletter",
$('#contact input[name="newsletter"]').val()
);
}