Created
October 1, 2014 19:36
-
-
Save bastianallgeier/c396df7923848912393d to your computer and use it in GitHub Desktop.
Plain contactform example for Kirby 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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'); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Hey, | |
a new contact request has been submitted! | |
---- | |
Name: <?php echo $name ?> | |
---- | |
Email: <?php echo $email ?> | |
---- | |
Text: <?php echo $text ?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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') ?> |
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?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The specification is a bit ambiguous at this point but it is more convenient to end the input tag with />, isn't it?