Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

[Solved] Contact form not working properly inside template loop


Reply

2 Posts   229 Views

Avatar
Anytech

3 March 2014 at 5:10pm Community Member, 2 Posts

Hello,

I am having trouble getting this thing working. I have been trying for hours!

The site is a parallax site http://www.anytech.co.nz/fdc

For some reason I cannot get this to work. I have the contact from working on other sites. It posts to /fdc/home/ContactForm which does not exist and I never receive any emails.

Any help is appreciated. Thanks.

Page.php (just the bottom bit)

class Page_Controller extends ContentController {
   
   
   public static $allowed_actions = array(
'ContactForm'
);
   
function ContactForm() {
// Create fields
$fields = new FieldList(
         new TextField('nameContact','Name','Name'),
         new TextField('urlContact','Website','Website'),
new EmailField('emailContact','Email','Email'),
new TextareaField('obsContact','Message','Message')
);
// Create action
$actions = new FieldList(new FormAction('SendContactForm', 'Send'));
// Create Validators
//$validator = new RequiredFields();
//return new Form($this, 'ContactForm', $fields, $actions);
      $form = new Form($this, 'ContactForm', $fields, $actions);
   $form->forAjaxTemplate();
   return $form;
}
   
   
   function SendContactForm($data, $form) {
      Debug::dump($this->requestParams);
      
//Set data
$From = $data['emailContact'];
$To = 'omikaman@gmail.com';
$Subject = "Website Contact message";
$email = new Email($From, $To, $Subject);
//set template
$email->setTemplate('ContactEmail');
//populate template
$email->populateTemplate($data);
//send mail
$email->send();
      Page_Controller::redirect($this->Link("?success=1"));
}
}

Page.ss

<% loop getPages() %>   
   <div class="slide" id="slide$Pos" data-slide="$Pos" <% if $ParallaxRatio %>data-stellar-background-ratio="$ParallaxRatio"<% end_if %>>
            <div class="container clearfix">
            <% loop getGridContent() %>
               <div class="grid_$Columns alpha omega">
                  $Content
               </div>
            <% end_loop %>
            <% loop $MenuCategorys %>
               <% if $PreColumns > 0 %>
               <div class="grid_$PreColumns alpha omega">
               </div>
               <% end_if %>
               <div class="grid_$Columns alpha omega">
                        <h2>$Category</h2>   
                        <ul>
                        <% loop $MenuItems %>
                           <li>$ItemName <br /><% if $Description %>$Description<% end_if %>$Price<br /><br /></li>
                        <% end_loop %>   
                        </ul>
               </div>       
            <% end_loop %>
            <% loop getCP() %>
               <% loop $Up.Up.ContactForm %>
       <form name="contactForm" $FormAttributes>
<h2>Contact Form</h2>
          <div class="inputsrow clearfix">
             <div class="inputicon">
                <span></span>
$Fields.FieldByName(nameContact)
             </div>
             <div class="inputicon icon2">
                <span></span>
$Fields.FieldByName(emailContact)
             </div>
             <div class="inputicon icon3">
                <span></span>
$Fields.FieldByName(urlContact)
             </div>
          </div>
          <div class="commenttext">
   $Fields.FieldByName(obsContact)
          </div>

<input type="hidden" name="SecurityID" value="$SecurityID" class="hidden" id="Form_ContactForm_SecurityID" />

          <input type="submit" class="btn5" id="contactSmbt" />
          <div id="msgContact"></div>
          <div id="contactLoader" class="loader">
             <span></span>
          </div>
       </form>
<% end_loop %>
            <% end_loop %>
            
      </div>
   </div>
   
<% end_loop %>

Avatar
Anytech

3 March 2014 at 8:50pm Community Member, 2 Posts

It looks like the code was correct but it needed flushing a few times!
Let me know if anyone needs to see more of the code to solve their problem.