I’m working on a couple uniform contact forms. I’ve got both of them working:
- The validation works and prevents the form from being sent if there are errors
- When there are no errors, the forms both send the emails with no problem
The problem, however, is that instead of refreshing the form page with a success message, the submission process links to the panel login page. I cannot for the life of me figure out why.
The simpler contact form is almost exactly copypasted from the documentation basic example.
The controller:
<?php
use Uniform\Form;
return function ($site, $pages, $page)
{
$form = new Form([
'email' => [
'rules' => ['required', 'email'],
'message' => 'Please enter a valid email address',
],
'name' => [],
'message' => [
'rules' => ['required'],
'message' => 'Please enter a message',
],
]);
if (r::is('POST')) {
$form->emailAction([
'to' => '[VALID EMAIL]',
'from' => '[VALID EMAIL]',
'subject' => 'New message from {name}',
]);
}
return compact('form');
};
The relevant portion of the template:
<div class="six columns offset-by-three">
<?php if ($form->success()): ?>
Thank you for your message. We will get back to you soon!
<?php else: ?>
<?php snippet('uniform/errors', ['form' => $form]) ?>
<?php endif; ?>
</div>
<form action="<?php echo $page->url() ?>" method="POST" class="six columns offset-by-three">
<label>Email</label>
<input<?php if ($form->error('email')): ?> class="error"<?php endif; ?> name="email" type="email" value="<?php echo $form->old('email') ?>">
<label>Name</label>
<input<?php if ($form->error('name')): ?> class="error"<?php endif; ?> name="name" type="text" value="<?php echo $form->old('name') ?>">
<label>Message</label>
<textarea<?php if ($form->error('message')): ?> class="error"<?php endif; ?> name="message"><?php echo $form->old('message') ?></textarea>
<?php echo csrf_field() ?>
<?php echo honeypot_field() ?>
<input type="submit" value="Submit">
</form>
Any thoughts on what could be causing this problem?