We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16863
    • 29 Posts
    I’m using formit on a site and it’s been working fine for me, but yesterday one of the people I’m working with on the project submitted a contact form and some of the placeholders came through without being replaced by the strings from the fields.

    I can’t reproduce this error myself, so I’m hoping someone has experienced something similar and knows a solution.

    Thanks

    Here’s the content from the report email that came through when she submitted the form
    (Copy/pasted, so the formatting has been removed)

    Report from the Sonny’s website contact form:
    Customer’s Name: A** H********
    Email Address: a******@*******.com
    Store Visited: [[+addressString]]
    Date of Visit: [[+date]]
    Time of Visit: [[+time]]
    Address: 6*** P******** L***
    City: O******
    State/Province: fl
    Zip: 32***
    Phone: 407*******
    Eclub: √
    [[+text]]

    Here’s my code
    [[!FormIt?  
       &hooks=`emailSelector,employmentAddressSelector,spam,email,addAContact,redirect`  
       &emailTpl=`contact_tpl`  
       &emailTo=`[[+emailAddresses]]`
       &emailBCC=`[email protected],[email protected]`  
       &redirectTo=`77`  
       &validate=`email:email:required,  
          text:required:stripTags,
          date:required, 
          first_name:required, 
          last_name:required, 
          address:required, 
          city:required, 
          state:required, 
          zip:required, 
          phone:required, 
          date:required, 
          time:required, 
          name:blank`        
    ]]
    
    <p>[[+fi.error.error_message]]</p>  
      
    <form action="[[~[[*id]]]]" method="post" class="form">  
        <input type="hidden" name="nospam:blank" value="" /> 
        
        <fieldset>
        	<legend>Store Details</legend>
            <label for="location">
                Store Location:<span class="required">*</span>
                <span class="error">[[+fi.error.text]]</span>
                <select id="location" name="location" size="1" value="[[+fi.location]]">
                    <option value="" selected="selected">Select a store</option>
                    [[StoreOptions]]
                </select>
            </label>
            <label for="date">  
                Date of Visit:<span class="required">*</span>  
                <span class="error">[[+fi.error.date]]</span>  
            </label>  
            <input class="datepicker" type="text" name="date" id="date" value="[[+fi.date]]" />  
            <label for="time">  
                Time of Visit:<span class="required">*</span>  
                <span class="error">[[+fi.error.time]]</span>  
            </label>  
            <input type="text" name="time" id="time" value="[[+fi.time]]" />  
        </fieldset>
     
    
    	<fieldset>
        	<legend>Your Contact Information</legend>
            <label for="first_name">  
                First Name:<span class="required">*</span>  
                <span class="error">[[+fi.error.first_name]]</span>  
            </label>  
            <input type="text" name="first_name" id="first_name" value="[[+fi.first_name]]" />  
          
            <label for="last_name">  
                Last Name:<span class="required">*</span>  
                <span class="error">[[+fi.error.last_name]]</span>  
            </label>  
            <input type="text" name="last_name" id="last_name" value="[[+fi.last_name]]" />  
          
            <label for="email">  
                Email Address:<span class="required">*</span>  
                <span class="error">[[+fi.error.email]]</span>  
            </label>  
            <input type="text" name="email" id="email" value="[[+fi.email]]" />  
          
            <label for="address">  
                Address:<span class="required">*</span>  
                <span class="error">[[+fi.error.address]]</span>  
            </label>  
            <input type="text" name="address" id="address" value="[[+fi.address]]" />  
            <label for="city">  
                City:<span class="required">*</span>  
                <span class="error">[[+fi.error.city]]</span>  
            </label>  
            <input type="text" name="city" id="city" value="[[+fi.city]]" />  
            <label for="state">  
                State/Province:<span class="required">*</span>  
                <span class="error">[[+fi.error.state]]</span>  
            </label>  
            <input type="text" name="state" id="state" value="[[+fi.state]]" />  
            <label for="zip">  
                Zip:<span class="required">*</span>  
                <span class="error">[[+fi.error.zip]]</span>  
            </label>  
            <input type="text" name="zip" id="zip" value="[[+fi.zip]]" />  
            <label for="phone">  
                Phone:<span class="required">*</span>  
                <span class="error">[[+fi.error.phone]]</span>  
            </label>  
            <input type="text" name="phone" id="phone" value="[[+fi.phone]]" />  
          
            <label for="text">  
                Comments:<span class="required">*</span>  
                <span class="error">[[+fi.error.text]]</span>  
            </label>  
            <textarea name="text" id="text" cols="55" rows="7" value="[[+fi.text]]">[[+fi.text]]</textarea>  
            <label for="eclub">  
                I would like to receive email updates and offers from Sonny's Bar-B-Q: 
                <input type="hidden" name="eclub[]" value="" />
            </label>  
            <input type="checkbox" name="eclub" id="eclub_join" value="join" [[!+fi.eclub:FormItIsChecked=`join`]] />  
        </fieldset>  
      
        <fieldset class="form-buttons">
        	<input class="hidden" type="text" name="name" id="name" autocomplete="off"  value="" /> 
            <input type="submit" value="Send Contact Inquiry" />  
        </fieldset>  
    </form>    
    


    Here’s my template chunk
    <div align="center">
    <table cellpadding="5" cellspacing="0" width="650" border="0">
    <tbody>
      <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif; font-weight:bold;'  colspan="2">Report from the Sonny's website contact form:</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' >Customer's Name:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%">[[+first_name]] [[+last_name]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  bgcolor="#CCCCCC">Email Address:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC"><a href="mailto:[[+email]]" title="Send mail to [[+first_name]] [[+last_name]]">[[+email]]</a></td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  colspan="2" height="6" bgcolor="#666666"></td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' >Store Visited:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%">[[+addressString]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' bgcolor="#CCCCCC">Date of Visit:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC">[[+date]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  bgcolor="#CCCCCC">Time of Visit:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC">[[+time]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  colspan="2" height="6" bgcolor="#666666"></td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' >Address:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%">[[+address]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  bgcolor="#CCCCCC">City:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC">[[+city]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' >State/Province:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%">[[+state]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  bgcolor="#CCCCCC">Zip:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC">[[+zip]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif' >Phone:</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%">[[+phone]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  bgcolor="#CCCCCC">[[+eclub:notempty=`Eclub:`]]</td>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  width="70%" bgcolor="#CCCCCC">[[+eclub:notempty=`√`]]</td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  height="6" colspan="2" bgcolor="#666666"></td>
        </tr>
        <tr>
          <td style='font-size:11px; line-height:14px; font-family:Helvetica, Arial, sans-serif'  colspan="2"><p>[[+text]]</p></td>
        </tr>
    </tbody>
    </table>
    </div>
    

      • 28215
      • 4,149 Posts
        shaun mccormick | bigcommerce mgr of software engineering, former modx co-architect | github | splittingred.com
        • 16863
        • 29 Posts
        I’ve created an issue. Let me give some more information that will hopefully help.

        The person who sent the failed message was using Windows XP & Internet Explorer (I can’t see why that would matter, I tested in XP/IE6 and it worked.)

        The fields are set as required, so she couldn’t have left them blank.

        also, I have a few snippets referenced, here is the code for those
        (if anyone has suggestions to improve my PHP, I’m learning and would gladly accept them)

        StoreOptions
        <?php
        $path = MODX_CORE_PATH . 'components/storeaddresses/';
        $result = $modx->addPackage('storeaddresses',$path . 'model/','modx_');
        if (! $result) {
          return '<p>Error: Menu package failed to load.</p>';
        } else {
          $output = '';
        }
        
        //$ri = $modx->resourceIdentifier;
        
        $items = $modx->getCollection('Address');
        //$items = $modx->getCollection('Address', array(docid => $ri));
        
        $sortArray = array();
        
        if($items != null){
          
          foreach($items as $item)
          {
            foreach($item as $key=>&$value)
            {
              if(!isset($sortArray[$key]))
              {
                $sortArray[$key] = array();
              }
              $sortArray[$key][] = $value;
            }
          }
        }
        else{
          $output .= '<p>Error: Menu item data failed to load.</p>';
        }
        
        
        
        $orderby = 'city';
        
        
        array_multisort($sortArray[$orderby],SORT_ASC,$items);
        
        $sortArray = null;
        $sortArray = array();
        
        if($items != null){
          
          foreach($items as $item)
          {
            foreach($item as $key=>&$value)
            {
              if(!isset($sortArray[$key]))
              {
                $sortArray[$key] = array();
              }
              $sortArray[$key][] = $value;
            }
          }
        }
        else{
          $output .= '<p>Error: .</p>';
        }
        
        $orderby = 'state';
        
        
        array_multisort($sortArray[$orderby],SORT_ASC,$items);
        
        
        
          foreach($items as $item) {
          
            $output .= '<option value="'.$item->get('dealerId') .'">';
            $output .= $item->get('state') .' - ';
          $output .= $item->get('city') .' - ';
          $output .= $item->get('street') .'</option>';
          }  
        
        
        
        return $output;


        emailSelector
        <?php
        $path = MODX_CORE_PATH . 'components/storeaddresses/';
        $result = $modx->addPackage('storeaddresses',$path . 'model/','modx_');
        if (! $result) {
          return '<p>Error: Menu package failed to load.</p>';
        } else {
          $output = '';
        }
        
        //$ri = $modx->resourceIdentifier;
        $userChoice = $hook->getValue('location');
        $did = intval($userChoice);
        
        //$items = $modx->getCollection('Address');
        $items = $modx->getCollection('Address', array(dealerId => $did));
        
        if($items != null)
        {
          foreach($items as $item) {
          $output .= $item->get('contactAddresses');
          }  
        }
        else
        {
          $output = 'corporate@**********.com';
        }
        
        $hook->setValue('emailAddresses', $output);
        return true;



        employmentAddressSelector

        <?php
        $path = MODX_CORE_PATH . 'components/storeaddresses/';
        $result = $modx->addPackage('storeaddresses',$path . 'model/','modx_');
        if (! $result) {
          return '<p>Error: store address package failed to load.</p>';
        } else {
          $output = '';
        }
        
        //$ri = $modx->resourceIdentifier;
        $userChoice = $hook->getValue('location');
        $did = intval($userChoice);
        
        //$items = $modx->getCollection('Address');
        $items = $modx->getCollection('Address', array(dealerId => $did));
        
        if($items != null)
        {
          foreach($items as $item) {
          $output .= $item->get('street');
          $output .= ' - ';
          $output .= $item->get('city');
          $output .= ', ';
          $output .= $item->get('state');
        }  
        }
        else
        {
          $output = 'Corporate Office';
        }
        
        $hook->setValue('addressString', $output);
        return true;