<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Twitter Bootstrap &#8211; Roy Duineveld</title>
	<atom:link href="https://royduineveld.nl/tag/twitter-bootstrap/feed/" rel="self" type="application/rss+xml" />
	<link>https://royduineveld.nl</link>
	<description>Waarom moeilijk doen als het makkelijk kan?</description>
	<lastBuildDate>Tue, 27 Jan 2026 07:48:00 +0000</lastBuildDate>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.26</generator>
	<item>
		<title>Geavanceerd Bootstrap 3 gebruik</title>
		<link>https://royduineveld.nl/geavanceerd-bootstrap-3-gebruik/</link>
		<comments>https://royduineveld.nl/geavanceerd-bootstrap-3-gebruik/#respond</comments>
		<pubDate>Sat, 03 Jan 2015 13:35:39 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[LESS]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=718</guid>
		<description><![CDATA[<p>Bootstrap, een geweldig HTML, CSS en JS framework om snel en eenvoudig responsive websites mee te ontwikkelen. Echter hekelen veel mensen tegen het &#8220;probleem&#8221; dat de HTML &#8220;vervuild&#8221; wordt met...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/geavanceerd-bootstrap-3-gebruik/">Geavanceerd Bootstrap 3 gebruik</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Bootstrap, een geweldig HTML, CSS en JS framework om snel en eenvoudig responsive websites mee te ontwikkelen. Echter hekelen veel mensen tegen het &#8220;probleem&#8221; dat de HTML &#8220;vervuild&#8221; wordt met alle classes die nodig zijn voor de styling. Kan dat niet anders?</p>
<h2>Bootstrap 3 met <a title="LESS" href="http://lesscss.org/" target="_blank">LESS</a></h2>
<p>Dat kan zeker anders! Gebruik de <a title="Bootstrap LESS bestanden" href="http://getbootstrap.com/css/#less" target="_blank">LESS bestanden van Bootstrap</a>! LESS moet wél ge-compiled worden naar gewoon CSS, hiervoor zijn tal van plugins te vinden voor populaire systemen als <a title="LESS plugin voor WordPress" href="https://wordpress.org/plugins/wp-less/" target="_blank">WordPress</a> en <a title="LESS plugin voor Magento" href="http://www.magentocommerce.com/magento-connect/magemaven-lesscss.html" target="_blank">Magento</a>, maar nog handiger is <a title="Grunt" href="http://gruntjs.com/" target="_blank">Grunt</a> of <a title="Gulp" href="http://gulpjs.com/" target="_blank">Gulp</a>! Alleen door LESS te gebruiken ben je er natuurlijk niet, daarvoor zijn er in <a title="LESS mixins" href="http://lesscss.org/features/#mixins-feature" target="_blank">LESS mixins</a>! In de Bootstrap documentatie zie je op meerdere plekken voorbeelden staan met &#8220;Usage as a Mixin&#8221; als commentaar erbij. Hiermee kan je classes aan selectors hangen.</p>
<h3>Bootstrap classes aan CSS selectors</h3>
<p>Wanneer je een afbeelding ronde hoeken wilt geven heeft Bootstrap hier de &#8220;img-rounded&#8221; class voor, in de <a title="Bootstrap image shapes" href="http://getbootstrap.com/css/#images-shapes" target="_blank">documentatie</a> staat dat deze als volgt gebruikt kan worden:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;img src=&quot;...&quot; alt=&quot;...&quot; class=&quot;img-rounded&quot;&gt;
</pre>
<p>Wanneer je alle afbeeldingen op je website ronde hoeken wilt geven, kan dit middels LESS i.c.m. Bootstrap als volgt gedaan worden:</p>
<pre class="brush: css; title: ; notranslate">
img {
	.img-rounded();
}
</pre>
<p>Op die manier zijn de classes in de HTML niet nodig!</p>
<h3>Bootstrap Grid met mixins</h3>
<p>Niet alleen de &#8220;eenvoudige&#8221; dingen uit Bootstrap kunnen op deze manier gebruikt worden, maar ook bijvoorbeeld het <a title="Bootstrap grid i.c.m. LESS" href="http://getbootstrap.com/css/#grid-less" target="_blank">Bootstrap Grid</a>! Een stukje HTML als voorbeeld:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;container&quot;&gt;
	&lt;div class=&quot;menu&quot;&gt;&lt;/div&gt;
	&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Wanneer je van de container een row wilt maken en van menu en content een kolom dan kan je dit als volgt doen:</p>
<pre class="brush: css; title: ; notranslate">
.container {
	.make-row();

	.menu {
		.make-md-column(3);
	}

	.content {
		.make-md-column(9);
	}
}
</pre>
<blockquote><p>Een heel mooi voorbeeld waar dit gebruikt wordt is het <a href="https://github.com/webcomm/magento-boilerplate" title="Magento Boilerplate" target="_blank">Magento Boilerplate</a>!</p></blockquote>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/geavanceerd-bootstrap-3-gebruik/">Geavanceerd Bootstrap 3 gebruik</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/geavanceerd-bootstrap-3-gebruik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pijltjes op de collapse / accordion van Twitter Bootstrap</title>
		<link>https://royduineveld.nl/pijltjes-collapse-accordion-twitter-bootstrap/</link>
		<comments>https://royduineveld.nl/pijltjes-collapse-accordion-twitter-bootstrap/#comments</comments>
		<pubDate>Sun, 01 Sep 2013 14:09:21 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=515</guid>
		<description><![CDATA[<p>Recent kreeg ik feedback op een website die ik in het verleden gemaakt had waarbij de collapse van Twitter Bootstrap gebruikt wordt, de opmerking was dat het niet duidelijk genoeg...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/pijltjes-collapse-accordion-twitter-bootstrap/">Pijltjes op de collapse / accordion van Twitter Bootstrap</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Recent kreeg ik feedback op een website die ik in het verleden gemaakt had waarbij de <a title="Ga naar de collapse documentatie" href="http://getbootstrap.com/2.3.2/javascript.html#collapse" target="_blank">collapse</a> van Twitter Bootstrap gebruikt wordt, de opmerking was dat het niet duidelijk genoeg was dat deze opengeklapt kunnen worden door aan te klikken. Zodoende hier pijltjes aan toegevoegd welke verdwijnen zodra er één geopend is. Hieronder zal ik uitleggen wat ik hiervoor aangepast heb.</p>
<p><a href="https://royduineveld.nl/wp-content/uploads/2013/09/collapse.png"><img class="aligncenter size-large wp-image-516" alt="Twitter Bootstrap Collapse" src="https://royduineveld.nl/wp-content/uploads/2013/09/collapse-1024x434.png" width="550" height="233" srcset="https://royduineveld.nl/wp-content/uploads/2013/09/collapse-1024x434.png 1024w, https://royduineveld.nl/wp-content/uploads/2013/09/collapse-300x127.png 300w, https://royduineveld.nl/wp-content/uploads/2013/09/collapse.png 1184w" sizes="(max-width: 550px) 100vw, 550px" /></a></p>
<h2>HTML aanpassen</h2>
<p>Voeg aan elke &#8220;accordion-heading&#8221; een afbeelding van een pijltje toe met een &#8220;pull-left&#8221;.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;accordion-heading&quot;&gt;
	&lt;h2&gt;&lt;i class=&quot;icon-chevron-down pull-left&quot;&gt;&lt;/i&gt; &lt;a class=&quot;accordion-toggle&quot; data-toggle=&quot;collapse&quot; data-parent=&quot;#wizard&quot; href=&quot;#brand&quot;&gt;Merk&lt;/a&gt;&lt;/h2&gt;
&lt;/div&gt;
</pre>
<h2>CSS toevoegen</h2>
<p>Zoals hierboven in de HTML te zien is heb ik heading 2 tags gebruikt, hier moest de margin voor het icoon dan ook op aangepast worden:</p>
<pre class="brush: css; title: ; notranslate">
.accordion .icon-chevron-down {
	margin: 9px 10px 0 15px;
}
</pre>
<h2>Javascript toevoegen</h2>
<p>Om het allemaal goed te laten functioneren heb ik een stukje Javascript toegevoegd welke inhaakt op de Javascript van de collapse. Zoals te zien wordt hier jQuery bij gebruikt.</p>
<pre class="brush: jscript; title: ; notranslate">
$('#wizard').on('show', function (e) {
	$('.accordion .icon-chevron-down').removeClass('hide');
	$(e.target).prev().children().children('.icon-chevron-down').addClass('hide');
});

$('#wizard').on('hide', function (e) {
	$('.accordion .icon-chevron-down').removeClass('hide');
});
</pre>
<blockquote><p>Mocht iemand zich geroepen voelen dit te melden bij Twitter Boostrap als toevoeging, ga je gang!</p></blockquote>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/pijltjes-collapse-accordion-twitter-bootstrap/">Pijltjes op de collapse / accordion van Twitter Bootstrap</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/pijltjes-collapse-accordion-twitter-bootstrap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gebruikers niet laten wachten na formulieren</title>
		<link>https://royduineveld.nl/gebruikers-niet-laten-wachten-na-formulieren/</link>
		<comments>https://royduineveld.nl/gebruikers-niet-laten-wachten-na-formulieren/#respond</comments>
		<pubDate>Tue, 11 Jun 2013 14:41:26 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=464</guid>
		<description><![CDATA[<p>Geregeld kom ik websites tegen waarbij je een aantal seconden moet wachten na het versturen van een formulier. Maar waarom? Om enkel te vertellen dat het toevoegen van het bericht...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/gebruikers-niet-laten-wachten-na-formulieren/">Gebruikers niet laten wachten na formulieren</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Geregeld kom ik websites tegen waarbij je een aantal seconden moet wachten na het versturen van een formulier. Maar waarom? Om enkel te vertellen dat het toevoegen van het bericht gelukt is? Dat kan toch ook op de betreffende pagina waar je uiteindelijk naar doorgestuurd wordt.</p>
<p>Ik maak graag gebruik van CodeIgniter in combinatie met Twitter Bootstrap. Vandaar een voorbeeldje met deze twee. Een layout bestaat veelal uit een header en footer, deze zijn dan ook meestal opgesplitst in twee bestanden. Zo heb ik op de laatste regel in de header het volgende toegevoegd:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?=$this-&gt;session-&gt;flashdata('message') ? '&lt;div class=&quot;alert alert-success&quot;&gt;&lt;a class=&quot;close&quot; data-dismiss=&quot;alert&quot; href=&quot;#&quot;&gt;&amp;times;&lt;/a&gt;'.$this-&gt;session-&gt;flashdata('message').'&lt;/div&gt;' : '';?&gt;
</pre>
<p>En vervolgens na het toevoegen, bewerken, verwijderen of wat dan ook gebruik je het volgende:</p>
<pre class="brush: php; title: ; notranslate">
$this-&gt;session-&gt;set_flashdata('message','Het is gelukt!');
redirect('pagina');
</pre>
<p>En nog een paar linkjes naar de gebruikte onderdelen:</p>
<ul>
<li><span style="line-height: 13px;"><a title="Ga naar de Twitter Bootstrap documentantie over alerts" href="http://twitter.github.io/bootstrap/components.html#alerts" target="_blank">Twitter Bootstrap alerts</a><br />
</span></li>
<li><a title="Ga naar de CodeIgniter documentantie over sessions" href="http://ellislab.com/codeigniter/user-guide/libraries/sessions.html" target="_blank">CodeIgniter session class over flashdata</a></li>
<li><a title="Ga naar de CodeIgniter documentatie over de URL helper" href="http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html" target="_blank">CodeIgniter URL helper over redirect</a></li>
</ul>
<blockquote><p>Als laatste nog even een voorbeeld van een website waar ik dit heb toegepast: <a title="Ga naar Fastr" href="http://fastr.nl" target="_blank">Fastr</a>, een nieuw platform voor autoliefhebbers!</p></blockquote>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/gebruikers-niet-laten-wachten-na-formulieren/">Gebruikers niet laten wachten na formulieren</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/gebruikers-niet-laten-wachten-na-formulieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Bootstrap en CodeIgniter&#8217;s form validation</title>
		<link>https://royduineveld.nl/twitter-bootstrap-en-codeigniters-form-validation/</link>
		<comments>https://royduineveld.nl/twitter-bootstrap-en-codeigniters-form-validation/#respond</comments>
		<pubDate>Thu, 16 May 2013 19:00:39 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=454</guid>
		<description><![CDATA[<p>Ik ben een grootte fan van Twitter Bootstrap en gebruik dit dan ook graag, het ziet er goed uit en ermee werken is kinderlijk eenvoudig. Voor het functionele gedeelte maak...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-bootstrap-en-codeigniters-form-validation/">Twitter Bootstrap en CodeIgniter&#8217;s form validation</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Ik ben een grootte fan van Twitter Bootstrap en gebruik dit dan ook graag, het ziet er goed uit en ermee werken is kinderlijk eenvoudig. Voor het functionele gedeelte maak ik graag gebruik van het CodeIgniter framework waarin allerlei handige functionaliteiten, waaronder <a title="Ga naar de Form Validation handleiding voor CodeIgniter" href="http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html" target="_blank">Form Validation</a>. Deze PHP class of &#8220;library&#8221; genoemd in CodeIgniter maakt het valideren van een formulier stukken makkelijker. Als voorbeeld:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// De controller welke de controller van CodeIgniter uitbreid
class Formulier extends CI_Controller
{
	// De index functie welke als eerst aangesproken wordt
	// wanneer de controller geladen is
	public function index()
	{
		// De library laden zodat deze gebruikt kan worden
		// Eventueel ook automatisch te laden via autoload.php
		$this-&gt;load-&gt;library('form_validation');

		// De p-tags verwijderen rondom validatie foutmeldingen
		// Normaal is dit: &lt;p&gt;Foutmelding...&lt;/p&gt;
		$this-&gt;form_validation-&gt;set_error_delimiters('', '');

		// Regels instellen voor ingevulde velden
		// De eerste waarde is de &quot;name&quot; van de input
		// De tweede waarde is de volledige naam van het veld
		// De derde waarde zijn de validatie regels:
		// - required = Verplicht in te vullen
		// - max_length[255] = Maximaal 255 karakters lang
		// - valid_email = Een geldig email adres
		// - trim = De PHP trim functie
		$this-&gt;form_validation-&gt;set_rules('name', 'Naam', 'required|max_length[255]|trim');
		$this-&gt;form_validation-&gt;set_rules('email', 'Email', 'required|valid_email|max_length[255]|trim');

		// Is het formulier verstuurd en is de validatie geslaagd?
		if( $this-&gt;form_validation-&gt;run()  )
		{
			// Ja!
			// Doe iets met de waardes,
			// opslaan in een database bijvoorbeeld
		}
		else
		{
			// Nee!
			// Het formulier weergeven
			$this-&gt;load-&gt;view('header');
			$this-&gt;load-&gt;view('formulier');
			$this-&gt;load-&gt;view('footer');
		}
	}
}
</pre>
<p>De &#8220;header&#8221; en &#8220;footer&#8221; view laten we even achterwege, door naar het formulier! Om de eventuele foutmeldingen weer te geven is de <a title="Ga naar de Helper Reference van de Form Validation library" href="http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#helperreference" target="_blank">validation_errors</a> functie, maar deze set alle foutmeldingen onder elkaar. Bij een mooi formulier ziet het er stukken beter uit als achter het veld een eventuele foutmelding komt te staan. Zie ook <a title="Ga naar de voorbeelden van formulier met Twitter Bootstrap" href="http://twitter.github.io/bootstrap/base-css.html#forms" target="_blank">de voorbeelden</a> van Twitter Bootstrap (vrij onderaan, je kan beter eerst naar buttons gaan en dan naar boven scrollen). Om dit voor elkaar te krijgen is er de <a title="Ga naar de Helper Reference van de Form Validation library" href="http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#helperreference" target="_blank">form_error</a> functie. Deze in combinatie met de <a title="Ga naar de Helper Reference van de Form Validation library" href="http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#helperreference" target="_blank">set_value</a> functie maakt het af. Deze laatste zorgt er namelijk voor dat de ingevulde waardes blijven, wanneer de validatie mislukt is, na het versturen van het formulier. Dit bij elkaar gestopt resulteert in het volgende:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;Gebruiker &lt;?=(isset($id) ? 'bewerken' : 'toevoegen');?&gt;&lt;/h1&gt;
&lt;hr&gt;
&lt;?=form_open('',array('class' =&gt; 'form-horizontal'));?&gt;
	&lt;div class=&quot;control-group&lt;?=form_error('name') ? ' error' : '';?&gt;&quot;&gt;
		&lt;label class=&quot;control-label&quot; for=&quot;name&quot;&gt;Naam&lt;/label&gt;
		&lt;div class=&quot;controls&quot;&gt;
			&lt;input type=&quot;text&quot; id=&quot;name&quot; name=&quot;name&quot; placeholder=&quot;Naam&quot; value=&quot;&lt;?=set_value('name',(isset($name) ? $name : '')); ?&gt;&quot;&gt;
			&lt;span class=&quot;help-inline&quot;&gt;&lt;?=form_error('name'); ?&gt;&lt;/span&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;control-group&lt;?=form_error('email') ? ' error' : '';?&gt;&quot;&gt;
		&lt;label class=&quot;control-label&quot; for=&quot;email&quot;&gt;Email&lt;/label&gt;
		&lt;div class=&quot;controls&quot;&gt;
			&lt;input type=&quot;email&quot; id=&quot;email&quot; name=&quot;email&quot; placeholder=&quot;Email adres&quot; value=&quot;&lt;?=set_value('email',(isset($email) ? $email : '')); ?&gt;&quot;&gt;
			&lt;span class=&quot;help-inline&quot;&gt;&lt;?=form_error('email'); ?&gt;&lt;/span&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;control-group&quot;&gt;
		&lt;div class=&quot;controls&quot;&gt;
			&lt;button type=&quot;submit&quot; class=&quot;btn btn-success&quot;&gt;&lt;i class=&quot;icon-ok icon-white&quot;&gt;&lt;/i&gt; Opslaan&lt;/button&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>Eén ding heb ik nog niet uitgelegd! Programmeren volgens <a title="Ga naar Wikipedia over DRY" href="http://en.wikipedia.org/wiki/Don't_repeat_yourself" target="_blank">DRY</a> houd dus ook géén dubbele formulieren in. Vandaar de <a title="Ga naar de isset functie van PHP" href="http://php.net/isset" target="_blank">isset</a> functies. Het formulier om iets toe te voegen en iets te bewerken kan dus samengevoegd worden. Wanneer dit formulier vanuit de controller geladen wordt zijn er geen waardes ingevuld. Willen we deze wel ingevuld hebben; dienen we deze enkel door te geven. De aangevulde en iets bewerkte controller:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// De controller welke de controller van CodeIgniter uitbreid
class Formulier extends CI_Controller
{
	// De &quot;constructor&quot;, deze wordt altijd voor de losse functies uitgevoerd
	public function __construct()
	{
		// Zorgen dat de &quot;constructor&quot; van de CI_Controller eerst uitgevoerd wordt
		parent::__construct();

		// De library laden zodat deze gebruikt kan worden
		// Eventueel ook automatisch te laden via autoload.php
		$this-&gt;load-&gt;library('form_validation');

		// De p-tags verwijderen rondom validatie foutmeldingen
		// Normaal is dit: &lt;p&gt;Foutmelding...&lt;/p&gt;
		$this-&gt;form_validation-&gt;set_error_delimiters('', '');

		// Regels instellen voor ingevulde velden
		// De eerste waarde is de &quot;name&quot; van de input
		// De tweede waarde is de volledige naam van het veld
		// De derde waarde zijn de validatie regels:
		// - required = Verplicht in te vullen
		// - max_length[255] = Maximaal 255 karakters lang
		// - valid_email = Een geldig email adres
		// - trim = De PHP trim functie
		$this-&gt;form_validation-&gt;set_rules('name', 'Naam', 'required|max_length[255]|trim');
		$this-&gt;form_validation-&gt;set_rules('email', 'Email', 'required|valid_email|max_length[255]|trim');
	}

	// De index functie welke als eerst aangesproken wordt
	// wanneer de controller geladen is, dus:
	// http://website.nl/formulier
	public function index()
	{
		// Is het formulier verstuurd en is de validatie geslaagd?
		if( $this-&gt;form_validation-&gt;run()  )
		{
			// Ja! Opslaan in de database
			$this-&gt;db-&gt;insert('gebruikers',$this-&gt;input-&gt;post());

			// Doorsturen naar de begin pagina
			redirect( site_url() );
		}
		else
		{
			// Nee! Het formulier weergeven
			$this-&gt;load-&gt;view('header');
			$this-&gt;load-&gt;view('formulier');
			$this-&gt;load-&gt;view('footer');
		}
	}

	// De bijwerken functie
	// http://website.nl/formulier/edit/1
	public function edit($id = 0)
	{
		// Gegevens uit de database halen
		$data = $this-&gt;db-&gt;get_where('gebruikers',array('id' =&gt; $id))-&gt;row();

		// Niets gevonden in de database?
		if(empty($data))
		{
			// Foutmelding weergeven
			show_404();
		}

		// Is het formulier verstuurd en is de validatie geslaagd?
		if( $this-&gt;form_validation-&gt;run()  )
		{
			// Ja! Bewerken in de database
			$this-&gt;db-&gt;where('id',$id);
			$this-&gt;db-&gt;update('gebruikers',$this-&gt;input-&gt;post());

			// Doorsturen naar de begin pagina
			redirect( site_url() );
		}
		else
		{
			// Nee! Het formulier weergeven
			// Deze keer de waardes uit de database meegeven
			$this-&gt;load-&gt;view('header');
			$this-&gt;load-&gt;view('formulier',$data);
			$this-&gt;load-&gt;view('footer');
		}
	}
}
</pre>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-bootstrap-en-codeigniters-form-validation/">Twitter Bootstrap en CodeIgniter&#8217;s form validation</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/twitter-bootstrap-en-codeigniters-form-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Bootstrap inline css voor de navbar-fixed-top weghalen</title>
		<link>https://royduineveld.nl/twitter-bootstrap-css-navbar-fix/</link>
		<comments>https://royduineveld.nl/twitter-bootstrap-css-navbar-fix/#respond</comments>
		<pubDate>Thu, 15 Nov 2012 14:28:06 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=31</guid>
		<description><![CDATA[<p>Zoals aangegeven in de documentatie van het Twitter Bootstrap: Add .navbar-fixed-top and remember to account for the hidden area underneath it by adding at least 40px padding to the &#60;body&#62;. Be...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-bootstrap-css-navbar-fix/">Twitter Bootstrap inline css voor de navbar-fixed-top weghalen</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Zoals aangegeven in de documentatie van het Twitter Bootstrap:</p>
<blockquote><p>Add .navbar-fixed-top and remember to account for the hidden area underneath it by adding at least 40px padding to the &lt;body&gt;. Be sure to add this after the core Bootstrap CSS and before the optional responsive CSS.</p></blockquote>
<p>Wat er zo uit zou zien:</p>
<pre class="brush: xml; title: ; notranslate">&lt;link href=&quot;css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
body { padding-top: 40px; }
&lt;/style&gt;
&lt;link href=&quot;css/bootstrap-responsive.css&quot; rel=&quot;stylesheet&quot;&gt;</pre>
<p>Niet echt netjes!  Beter zet je het volgende in je eigen stylesheet:</p>
<pre class="brush: css; title: ; notranslate">body { padding-top: 40px; }
@media screen and (max-width: 979px) {
 body { padding-top: 0px; }
}</pre>
<p>En kan je het gewoon weglaten:</p>
<pre class="brush: xml; title: ; notranslate">&lt;!-- Twitter Boostrap --&gt;
&lt;link href=&quot;css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;link href=&quot;css/bootstrap-responsive.css&quot; rel=&quot;stylesheet&quot;&gt;

&lt;!-- Eigen CSS --&gt;
&lt;link href=&quot;css/main.css&quot; rel=&quot;stylesheet&quot;&gt;</pre>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-bootstrap-css-navbar-fix/">Twitter Bootstrap inline css voor de navbar-fixed-top weghalen</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/twitter-bootstrap-css-navbar-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Boostrap 16 of 24 grid</title>
		<link>https://royduineveld.nl/twitter-boostrap-16-of-24-grid/</link>
		<comments>https://royduineveld.nl/twitter-boostrap-16-of-24-grid/#respond</comments>
		<pubDate>Thu, 15 Nov 2012 14:20:35 +0000</pubDate>
		<dc:creator><![CDATA[Roy Duineveld]]></dc:creator>
				<category><![CDATA[Tips & Trucs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>

		<guid isPermaLink="false">https://royduineveld.nl/?p=28</guid>
		<description><![CDATA[<p>Niet genoeg aan het 12 grid van Twitter Bootstrap? Maak je eigen bootstrap op: http://twitter.github.com/bootstrap/customize.html. Houd er rekening mee dat het Twitter Bootstrap uit drie grids bestaat (in het geval je het...</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-boostrap-16-of-24-grid/">Twitter Boostrap 16 of 24 grid</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Niet genoeg aan het 12 grid van Twitter Bootstrap? Maak je eigen bootstrap op: <a href="http://twitter.github.com/bootstrap/customize.html">http://twitter.github.com/bootstrap/customize.html</a>. Houd er rekening mee dat het Twitter Bootstrap uit drie grids bestaat (in het geval je het responsive gedeelte gebruikt). We dienen dus voor alle drie de grids de waardes aan te passen.</p>
<p>Grafisch voorbeeld waar de waardes voor dienen:</p>
<p><a href="https://royduineveld.nl/wp-content/uploads/2012/11/bootstrap_grid.png"><img class="alignnone size-medium wp-image-29" title="Grid Voorbeeld" src="https://royduineveld.nl/wp-content/uploads/2012/11/bootstrap_grid-300x135.png" alt="" width="300" height="135" srcset="https://royduineveld.nl/wp-content/uploads/2012/11/bootstrap_grid-300x135.png 300w, https://royduineveld.nl/wp-content/uploads/2012/11/bootstrap_grid.png 940w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><strong><span style="text-decoration: underline;">16 kolommen grid:</span></strong><br />
<strong>@gridColumns</strong> 16<br />
<strong>@gridColumnWidth</strong> 40px<br />
<strong>@gridGutterWidth</strong> 20px<br />
<strong>@gridColumnWidth1200</strong> 50px<br />
<strong>@gridGutterWidth1200</strong> 25px<br />
<strong>@gridColumnWidth768</strong> 36px<br />
<strong>@gridGutterWidth768</strong> 10px</p>
<p><strong><span style="text-decoration: underline;"> 24 kolommen grid:</span></strong><br />
<strong>@gridColumns</strong> 24<br />
<strong>@gridColumnWidth</strong> 30px<br />
<strong>@gridGutterWidth</strong> 10px<br />
<strong>@gridColumnWidth1200</strong> 35px<br />
<strong>@gridGutterWidth1200</strong> 15px<br />
<strong>@gridColumnWidth768</strong> 21px<br />
<strong>@gridGutterWidth768</strong> 10px</p>
<p>Het bericht <a rel="nofollow" href="https://royduineveld.nl/twitter-boostrap-16-of-24-grid/">Twitter Boostrap 16 of 24 grid</a> verscheen eerst op <a rel="nofollow" href="https://royduineveld.nl">Roy Duineveld</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://royduineveld.nl/twitter-boostrap-16-of-24-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>