This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
oliverdavies.uk-old-sculpin/docs/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7/index.html

272 lines
13 KiB
HTML
Raw Normal View History

2017-07-10 21:28:39 +00:00
<!DOCTYPE html>
<html class="no-js" lang="en-GB">
<head>
<title>Programmatically Load an Entityform in Drupal 7 | Oliver Davies</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="How to programmatically load, render and embed an entityform in Drupal 7.">
2017-07-12 06:22:51 +00:00
<meta property="og:url" content="https://www.oliverdavies.uk/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7">
2017-07-10 21:28:39 +00:00
<meta property="og:title" content="Programmatically Load an Entityform in Drupal 7"/>
2017-07-12 06:22:51 +00:00
<meta property="og:image" content="https://www.oliverdavies.uk/assets/images/me-precedent.jpg"/>
2017-07-10 21:28:39 +00:00
<meta property="og:image:height" content="327"/>
<meta property="og:image:type" content="image/jpg">
<meta property="og:image:width" content="327"/>
2017-07-12 06:22:51 +00:00
<link rel="stylesheet" href="https://www.oliverdavies.uk/assets/css/main.css">
<link rel="stylesheet" href="https://www.oliverdavies.uk/assets/css/blog-post.css">
2017-07-10 21:28:39 +00:00
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=57" sizes="57x57">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=114" sizes="114x114">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=72" sizes="72x72">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=144" sizes="144x144">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=60" sizes="60x60">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=120" sizes="120x120">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=76" sizes="76x76">
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=152" sizes="152x152">
<link rel="icon" href="/assets/images/me-precedent.jpg?s=160" sizes="160x160">
<link rel="icon" href="/assets/images/me-precedent.jpg?s=96" sizes="96x96">
<link rel="icon" href="/assets/images/me-precedent.jpg?s=32" sizes="32x32">
<link rel="icon" href="/assets/images/me-precedent.jpg?s=16" sizes="16x16">
</head>
<body class="">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
2017-07-12 06:22:51 +00:00
<a class="navbar-brand" href="https://www.oliverdavies.uk/">Oliver Davies</a>
2017-07-10 21:28:39 +00:00
</div>
<div id="navbar" class="collapse navbar-collapse" role="navigation">
<ul class="nav navbar-nav">
<li class="">
<a href="/">About</a>
</li>
<li class="">
<a href="/experience">Experience</a>
</li>
<li class="">
<a href="/testimonials">Testimonials</a>
</li>
<li class="">
<a href="/talks">Talks</a>
</li>
<li class="active">
<a href="/blog">Blog</a>
</li>
<li class="">
<a href="/contact">Contact</a>
</li>
</ul>
</div> </div>
</nav>
<div class="container">
<div class="row">
<main class="col-md-9">
<h1>Programmatically Load an Entityform in Drupal 7</h1>
2017-07-11 17:57:51 +00:00
<p class="posted text-light">22nd December 2015</p>
2017-07-10 21:28:39 +00:00
<p>I recently had my first experience using the <a href="https://www.drupal.org/project/entityform">Entityform module</a> in a project. It was quite easy to configure with different form types, but then I needed to embed the form into an overlay. I was expecting to use the <code>drupal_get_form()</code> function and render it, but this didnt work.</p>
<p>Here are the steps that I took to be able to load, render and embed the form.</p>
<h2 id="loading-the-form">Loading the Form</h2>
<p>The first thing that I needed to do to render the form was to load an empty instance of the entityform using <code>entityform_empty_load()</code>. In this example, <code>newsletter</code> is the name of my form type.</p>
<pre><code class="language-php">$form = entityform_empty_load('newsletter');
</code></pre>
<p>This returns an instance of a relevant <code>Entityform</code> object.</p>
<h2 id="rendering-the-form">Rendering the Form</h2>
<p>The next step was to be able to render the form. I did this using the <code>entity_form_wrapper()</code> function.</p>
<p>As this function is within the <code>entityform.admin.inc</code> file and not autoloaded by Drupal, I needed to include it using <code>module_load_include()</code> so that the function was available.</p>
<pre><code class="language-php">module_load_include('inc', 'entityform', 'entityform.admin');
$output = entityform_form_wrapper($form, 'submit', 'embedded'),
</code></pre>
<p>The first argument is the <code>Entityform</code> object that was created in the previous step (Ive <a href="https://www.drupal.org/node/2639584">submitted a patch</a> to type hint this within entityform so that its clearer what is expected), which is required.</p>
<p>The other two arguments are optional. The second argument is the mode (<code>submit</code> is the default value), and the last is the form context. <code>page</code> is the default value, for use on the submit page, however I changed this to <code>embedded</code>.</p>
<p>I could then pass this result into my theme function to render it successfully within the relevant template file.</p>
<h2 id="resources">Resources</h2>
<ul>
<li><a href="https://www.drupal.org/project/entityform">The entityform module</a></li>
<li><a href="https://www.drupal.org/node/2639584">My issue and patch to add the type hint to the entityform_form_wrapper function</a></li>
</ul>
<p class="tags">
Tags:
2017-07-12 06:22:51 +00:00
<a href="https://www.oliverdavies.uk/blog/tags/drupal">drupal</a>, <a href="https://www.oliverdavies.uk/blog/tags/drupal-7">drupal-7</a>, <a href="https://www.oliverdavies.uk/blog/tags/drupal-planet">drupal-planet</a>, <a href="https://www.oliverdavies.uk/blog/tags/entityform">entityform</a> </p>
2017-07-10 21:28:39 +00:00
<div class="post-pager is-flex">
<div class="is-half">
<a href="/blog/2015/07/21/automating-sculpin-jenkins">
&laquo; Automating Sculpin Builds with Jenkins CI
</a>
</div>
<div class="is-half text-right">
<a href="/blog/2016/02/15/announcing-the-drupal-vm-generator">
Announcing the Drupal VM Generator &raquo;
</a>
</div>
</div>
<div class="about-author">
<h2>About the Author</h2>
2017-07-12 06:22:51 +00:00
<img src="//images.oliverdavies.uk/assets/images/me-precedent.jpg" alt="Picture of Oliver" class="img-circle">
2017-07-10 21:28:39 +00:00
<p>Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a Senior Developer at <a href="https://microserve.io">Microserve</a> and also provides freelance consultancy services for Drupal websites, PHP applications and Linux servers.</p>
</div>
</main>
<div class="col-md-3">
<div class="panel badges text-center">
<a class="badge--da-member" href="https://assoc.drupal.org/membership" title="Im a Drupal Association member.">
<img
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/da-individual-member.png"
2017-07-10 21:28:39 +00:00
alt="Drupal Association Individual Member"
width="152"
>
</a>
<a href="http://drupalcores.com/#opdavies">
<img
alt="I built Drupal 8 with hand holding a wrench on blue background"
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/drupal-8.jpg"
2017-07-10 21:28:39 +00:00
/>
</a>
<img
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/badges/acquia-certified-developer-drupal-8.png"
2017-07-10 21:28:39 +00:00
alt="Acquia Certified Developer - Drupal 8 Exam Badge"
height="147" width="147"
/>
<a href="http://conference.phpnw.org.uk/phpnw17">
2017-07-12 06:22:51 +00:00
<img src="//images.oliverdavies.uk/assets/images/badges/phpnw17.png" alt="">
2017-07-10 21:28:39 +00:00
</a>
</div>
<div class="availability panel panel-default">
<div class="panel-heading">Availability</div>
<div class="panel-body">
<p>
<i class="fa fa-thumbs-o-up text-warning"></i>
Currently have limited part-time capacity
</p>
<p>
<i class="fa fa-thumbs-o-down text-danger"></i>
Currently no spare full-time capacity.
</p>
</div>
</div>
<div class="latest-posts panel panel-default">
<div class="latest-posts__heading panel-heading">Latest blog posts</div>
<ul class="list-group">
<li class="post list-group-item">
<span class="post__title">
<a href="/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot">
Introducing the Drupal Meetups Twitterbot
</a>
</span> -
<span class="post__date">9th June, 2017</span>
</li>
<li class="post list-group-item">
<span class="post__title">
<a href="/blog/2017/05/20/turning-drupal-module-into-feature">
Turning Your Custom Drupal Module into a Feature
</a>
</span> -
<span class="post__date">20th May, 2017</span>
</li>
<li class="post list-group-item">
<span class="post__title">
<a href="/blog/2017/05/15/drupalcamp-bristol-early-bird-tickets-sessions-sponsors">
DrupalCamp Bristol 2017 - Early Bird Tickets, Call for Sessions, Sponsors
</a>
</span> -
<span class="post__date">15th May, 2017</span>
</li>
</ul>
</div>
</div>
</div> </div>
<footer class="container">
<p class="copyright">
&copy; 2010-2017 Oliver Davies. Built with <a href="https://sculpin.io">Sculpin</a>.
</p>
<div class="meetups">
<h2>Things that I organise</h2>
<ul>
<li class="meetups--drupal-bristol">
<a href="http://www.drupalbristol.org.uk" title="Drupal Bristol">
2017-07-11 06:34:02 +00:00
<img
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg"
2017-07-11 06:34:02 +00:00
alt="Drupal Bristol logo"
>
2017-07-10 21:28:39 +00:00
</a>
</li>
<li class="meetups--drupalcamp-bristol">
<a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol">
2017-07-11 06:34:02 +00:00
<img
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png"
2017-07-11 06:34:02 +00:00
alt="DrupalCamp Bristol logo"
>
2017-07-10 21:28:39 +00:00
</a>
</li>
<li class="meetups--phpsw">
<a href="http://phpsw.uk" title="PHPSW">
2017-07-11 06:34:02 +00:00
<img
2017-07-12 06:22:51 +00:00
src="//images.oliverdavies.uk/assets/images/meetups/phpsw.jpeg"
2017-07-11 06:34:02 +00:00
alt="PHPSW logo"
>
2017-07-10 21:28:39 +00:00
</a>
</li>
</ul>
</div>
</footer>
2017-07-12 06:22:51 +00:00
<script src="https://www.oliverdavies.uk/assets/js/site.js"></script>
2017-07-10 21:28:39 +00:00
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11967257-1', 'auto'); ga('send', 'pageview');</script>
</body>
</html>