Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialStuart McPherson
15,939 PointsSite won't redirect after submitting form
After entering from details and submitting the contact page refreshes and doesn't redirect to the other page
<?php
require __DIR__ . '/vendor/autoload.php';
date_default_timezone_set ('Europe/London');
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
//$log = new Monolog\Logger('name');
//$log->pushHandler(new Monolog\Handler\StreamHandler('app.txt', Monolog\Logger::WARNING));
//$log->addWarning('Warning');
$app = new \Slim\Slim(array(
'view' => new \Slim\Views\Twig()
));
$view = $app->view();
$view->parserOptions = array(
'debug' => true
);
$view->parserExtensions = array(
new \Slim\Views\TwigExtension(),
);
$app->get('/', function() use($app){
$app->render('index.twig');
})->name('home');
$app->get('/contact', function() use($app){
$app->render('contact.twig');
})->name('contact');;
$app->post('/contact', function() use($app){
$name = $app->request->post('name');
$email = $app->request->post('email');
$msg = $app->request->post('msg');
if(!empty($name) && !empty($email) && !empty($msg)) {
$cleanName = filter_var($name, FILTER_SANITIZE_STRING);
$cleanEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
$cleanMsg = filter_var($msg, FILTER_SANITIZE_STRING);
} else {
//message the user that there was a problem
$app->redirect('/contact');
}
$transport = swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
$mailer = \Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance();
$message->setSubject('Email from our website');
$message->setFrom(array($cleanEmail => $cleanName));
$message->setTo(array('treehouse@localhost'));
$message->setBody($cleanMsg);
$result = $mailer->send($message);
if($result > 0) {
// send thank you message
$app->redirect('/');
} else {
// send a message to the user that the message failed ot send
// log the error
$app->redirect('/contact');
}
});
$app->run();
Downloaded the index.php file from the lesson and put that in, still doesn't work
2 Answers
Stuart McPherson
15,939 Pointsfigured it out
$transport = swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
$mailer = \Swift_Mailer::newInstance($transport);
should be
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
$mailer = \Swift_Mailer::newInstance($transport);
rvandaalen
24,090 PointsIt seems you're missing the path to the page you want the browser to go to after the form is submitted in the if statement towards the end of your code.
<?php
if($result > 0) {
// send thank you message
$app->redirect('/SOMEPAGE');
} else {
// send a message to the user that the message failed ot send
// log the error
$app->redirect('/contact');
}
?>
Stuart McPherson
15,939 PointsThanks for getting back to me on this. I want it to go back to the index.twig page which I though I set the url up as '/' ?