We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
  • So we have created a complex multiply part form for a client, with a lot of validation, signature captures, and file uploads. However we are finding at submission we are getting the following error: Fatal error: Call to a member function getValue() on null in /home/rdgroupc/public_html/core/cache/includes/elements/modsnippet/74.include.cache.php on line 2

    [[!FormIt?
    &hooks=`spam,FormItSaveForm,email,redirect`
    &formName=`[[*pagetitle]] Form`
    &formFields=`company_name,dba,federal_tax_structure,ein,wfile,primary_contact_fname,primary_contact_lname,primary_contact_email,primary_contact_phone,secondary_contact_fname,secondary_contact_lname,secondary_contact_email,secondary_contact_phone,business_email,business_phone,business_phone_ext,business_phone_mobile,business_phone_fax,business_address,business_address2,business_zip,business_city,business_state,business_country,remittance_address,remittance_company_name,remittance_address1,remittance_address2,remittance_city,remittance_zip,remittance_state,remittance_country,service_contact,service_contact_fname,service_contact_lname,service_contact_email,service_contact_phone,service_coverage,emergency,business_phone_emergency,business_phone_emergency_second,service_offered,general_liability,general_liability2,general_liability3,general_liability4,ins_file,signatureData1,signer1_name,signer1_email,signatureData2,signer2_name,signer2_email`
    &fieldNames=`company_name==Company Name,dba==Doing Business As,federal_tax_structure==Federal Tax Structure,ein==Federal Tax ID Number,wfile==W-9 File,primary_contact_fname==Primary Contact First Name,primary_contact_lname==Primary Contact Last Name,primary_contact_email==Primary Contact Email,primary_contact_phone==Primary Contact Phone,secondary_contact_fname==Secondary Contact First Name,secondary_contact_lname==Secondary Contact Last Name,secondary_contact_email==Secondary Contact Email,secondary_contact_phone==Secondary Contact Phone,business_email==Business Email,business_phone==Business Phone,business_phone_ext==Business Phone Extension,business_phone_mobile==Business Mobile Phone,business_phone_fax==Business Fax,business_address==Business Address Line 1,business_address2==Business Address Line 2,business_zip==Business Zip,business_city==Business City,business_state==Business State,business_country==Business Country,remittance_address==Remittance Address,remittance_company_name==Remittance Company Name,remittance_address1==Remittanec Address Line 1,remittance_address2==Remittance Line 2,remittance_city==Remittance City,remittance_zip==Remittance Zip,remittance_state==Remittance State/Province/Territory,remittance_country==Remittance Country,service_contact==Service Contact same as Primary,service_contact_fname==Service Contact First Name,service_contact_lname==Service Contact Last Name,service_contact_email==Service Contact Email,service_contact_phone==Service Contact Phone,service_coverage==Service Coverage Area (Miles),emergency==Offers Emergency Service,business_phone_emergency==Business Emergency Phone,business_phone_emergency_second==Secondary Business Emergency Phone,service_offered==Services Offered,general_liability==General Liability Listing 23rd Group as additionally insured,general_liability2==Have an Auto Policy,general_liability3==Have Workamn's Comp Insurance Policy,general_liability4==Have a State Certified Exempt Form,ins_file==Proof of Insurance File,signatureData1==Contract Signature,signer1_name==Contract Signer's Name,signer1_email==Contract Signer's Email,signatureData2==Agreement Signature,signer2_name==Agreement Signer's Name,signer2_email==Agreement Signer's Email`
    &emailTpl=`ApplyEmailTpl`
    &emailSubject=`A Partnership Application from [[+company_name]]`
    &emailTo=`****@exceleron****.com`
    &emailToName=`Vendor Team`
    &emailFrom=`****@exceleron****.com`
    &emailFromName=`Vendor Apply`
    &emailReplyTo=`[[+primary_contact_email]]`
    &emailReplyToName=`[[+primary_contact_fname]] [[+primary_contact_lname]] of [[+company_name]]`
    &emailMultiSeparator=`, `
    &redirectTo=`50`
    &validate=`workemail:blank,company_name:required,dba:required,federal_tax_structure:required,ein:required,primary_contact_fname:required,primary_contact_lname:required,primary_contact_email:email:required,primary_contact_phone:required,business_email:email:required,business_phone:required,business_address:required,business_zip:required,business_city:required,business_state:required,business_country:required,remittance_address:required,service_contact:required,service_coverage:required,emergency:required,service_offered:required,general_liability:required,general_liability2:required,general_liability3:required,signatureData1:required,signer1_name:required,signer1_email:email:required,signatureData2:required,signer2_name:required,signer2_email:email:required`
    ]]


    So I am not sure how to resolve the issue....

    Any one have this problem?

    This question has been answered by BobRay. See the first response.

      • 3749
      • 24,544 Posts
      Please don't double post.
        Did I help you? Buy me a beer
        Get my Book: MODX:The Official Guide
        MODX info for everyone: http://bobsguides.com/modx.html
        My MODX Extras
        Bob's Guides is now hosted at A2 MODX Hosting
        • 31837
        • 59 Posts
        Have you opened up the 74.include.cache.php file to see specifically what it's referencing? That could be a good way of working backwards to see where the problem lies.
        • I did and the problem appears to be with me trying to cache the session via PHP. I call a PHP snippet in the form to dynamically pull values based on user selection.

          $sessionValues = $hook->getValue('service_offered');


          foreach ($sessionValues as $k => $v) {

          $resource = preg_replace('/[^a-zA-Z0-9-_\.]/','_', $v);
          $Resource = strtolower($resource);

          $outputStr .= '
          <table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnCodeBlock">
          <tbody class="mcnTextBlockOuter">
          <tr>
          <td valign="top" class="mcnTextBlockInner">
          <div class="mcnTextContent">

          <table class="apply" style="margin-bottom:40px;">
          <tbody><tr>
          <td class="bold left" style="font-weight:bold;font-size:14px;color:#231f20 !important;text-transform:uppercase;">'. $v .' RATE INFO</td>
          </tr>

          <tr>
          <td class="left">Type of Work Rate</td>
          <td class="bold right">[[+'. $Resource .'_radio]]</td>
          </tr>

          [[+'. $Resource .'_radio:is=`Job`:then=`
          <tr>
          <td class="left">Job Rate Explanation</td>
          <td class="bold right">[[+'. $Resource .'_service_job_rate]]</td>
          </tr>
          `:else=`
          <tr>
          <td class="left">Labor Rate</td>
          <td class="bold right">[[+'. $Resource .'_service_labor_rate]]</td>
          </tr>

          [[+'. $Resource .'_service_travel_rate:notempty=`
          <tr>
          <td class="left">Travel Rate</td>
          <td class="bold right">[[+'. $Resource .'_service_travel_rate]]</td>
          </tr>
          `]]

          [[+'. $Resource .'_service_emergency_labor_rate:notempty=`
          <tr>
          <td class="left">Emergency Labor Rate</td>
          <td class="bold right">[[+'. $Resource .'_service_emergency_labor_rate]]</td>
          </tr>
          `]]

          [[+'. $Resource .'_service_comments:notempty=`
          <tr>
          <td class="left">Additional Comments</td>
          <td class="bold right">[[+'. $Resource .'_service_comments]]</td>
          </tr>
          `]]

          `]]

          </tbody></table>

          </div>
          </td>
          </tr>
          </tbody>
          </table>
          ';

          }

          return $outputStr;



          • discuss.answer
            • 3749
            • 24,544 Posts
            The quick solution would be this (untested):

            Replace

            $sessionValues = $hook->getValue('service_offered');


            with

            $sessionValues = array();
            
            if (isset($hook) && $hook) {
                $sessionValues = $hook->getValue('service_offered');
            } else {
               $modx->log(modX::LOG_LEVEL_ERROR, 'Hook does not exist');
            }


            That will tell you if it's happening all the time, or only in certain circumstances. You may be able to modify the error message to provide more debugging info. [ed. note: BobRay last edited this post 5 years, 11 months ago.]
              Did I help you? Buy me a beer
              Get my Book: MODX:The Official Guide
              MODX info for everyone: http://bobsguides.com/modx.html
              My MODX Extras
              Bob's Guides is now hosted at A2 MODX Hosting
            • That worked thanks