-
-
Save bastianallgeier/c396df7923848912393d to your computer and use it in GitHub Desktop.
<?php | |
return function($site, $pages, $page) { | |
$alert = null; | |
if(get('submit')) { | |
$data = array( | |
'name' => get('name'), | |
'email' => get('email'), | |
'text' => get('text') | |
); | |
$rules = array( | |
'name' => array('required'), | |
'email' => array('required', 'email'), | |
'text' => array('required', 'min' => 3, 'max' => 3000), | |
); | |
$messages = array( | |
'name' => 'Please enter a valid name', | |
'email' => 'Please enter a valid email address', | |
'text' => 'Please enter a text between 3 and 3000 characters' | |
); | |
// some of the data is invalid | |
if($invalid = invalid($data, $rules, $messages)) { | |
$alert = $invalid; | |
// the data is fine, let's send the email | |
} else { | |
// create the body from a simple snippet | |
$body = snippet('contactmail', $data, true); | |
// build the email | |
$email = email(array( | |
'to' => '[email protected]', | |
'from' => '[email protected]', | |
'subject' => 'New contact request', | |
'replyTo' => $data['email'], | |
'body' => $body | |
)); | |
// try to send it and redirect to the | |
// thank you page if it worked | |
if($email->send()) { | |
go('contact/thank-you'); | |
// add the error to the alert list if it failed | |
} else { | |
$alert = array($email->error()); | |
} | |
} | |
} | |
return compact('alert'); | |
}; |
Hey, | |
a new contact request has been submitted! | |
---- | |
Name: <?php echo $name ?> | |
---- | |
Email: <?php echo $email ?> | |
---- | |
Text: <?php echo $text ?> |
<?php snippet('header') ?> | |
<main class="main" role="main"> | |
<h1><?php echo $page->title()->html() ?></h1> | |
<form method="post"> | |
<?php if($alert): ?> | |
<div class="alert"> | |
<ul> | |
<?php foreach($alert as $message): ?> | |
<li><?php echo html($message) ?></li> | |
<?php endforeach ?> | |
</ul> | |
</div> | |
<?php endif ?> | |
<div class="field"> | |
<label for="name">Name <abbr title="required">*</abbr></label> | |
<input type="text" id="name" name="name"> | |
</div> | |
<div class="field"> | |
<label for="email">Email <abbr title="required">*</abbr></label> | |
<input type="email" id="email" name="email" required> | |
</div> | |
<div class="field"> | |
<label for="text">Text <abbr title="required">*</abbr></label> | |
<textarea id="text" name="text" required></textarea> | |
</div> | |
<input type="submit" name="submit" value="Submit"> | |
</form> | |
</main> | |
<?php snippet('footer') ?> |
The email class uses a capital E; make sure you change it in the controller.
This is great, could you tell me how to send an success message instead of going to other page?
Just changing "go('contact/thank-you');" to "$alert = "Thank You";" didnt work for me.
Im not great with php lol
Thanks in advance
Is there a reason this wouldn't work with AJAX? I'm using the same code I was using from my Kirby 1 site with the old plugin and it's no longer working.
For some themes (e.g. baseblog) it's necessary to add <?php snippet('menu') ?>
at the top of contact.php
, right after the header line.
Hey, this gist still works with kirby >= 2.4.1?
@masiarekrafal Yes, the gist still works fine with 2.4.1
The specification is a bit ambiguous at this point but it is more convenient to end the input tag with />, isn't it?
is it possible to add a fileupload field and to send the file as an attachment?
I am wondering the same thing as @aerus. I would love away to add and send a file attachment from the form.
Thanks a lot. Working fine with Kirby => 2.5.6
I made a fork, added an anti bot, CSS styles (for Starterkit), blueprints and several improvements in the template and the controller.
https://gist.github.com/starckio/30d800a6518ca4c966f48bfb9f658962
Hey,
thanks for your work ;)
i get the message: The email could not be sent
But no errors in logfiles or something.
Any suggestions why that happens?
Awesome!