<?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>MarcelMarnix.Com &#187; Tutorials Lessen</title>
	<atom:link href="http://marcelmarnix.com/wordpress/category/tutorials/feed" rel="self" type="application/rss+xml" />
	<link>http://marcelmarnix.com/wordpress</link>
	<description>MarcelMarnix.Com Codigniter &#38; Doctrine Tips Trucks en Lessen</description>
	<lastBuildDate>Thu, 23 Feb 2012 11:14:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Meerdere afbeeldingen plaatsen(Uploaden) en tegelijk verkleinen (comprimeren) in SP 2010</title>
		<link>http://marcelmarnix.com/wordpress/artikelen/meerdere-afbeeldingen-plaatsenuploaden-en-tegelijk-verkleinen-comprimeren-in-sp-2010</link>
		<comments>http://marcelmarnix.com/wordpress/artikelen/meerdere-afbeeldingen-plaatsenuploaden-en-tegelijk-verkleinen-comprimeren-in-sp-2010#comments</comments>
		<pubDate>Thu, 23 Feb 2012 10:49:41 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Artikelen]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>
		<category><![CDATA[Tutorials Lessen]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=221</guid>
		<description><![CDATA[
Het plaatsen(Uploaden) van afbeeldingen in Sharepoint 2010.
Wanneer we foto&#8217;s direct vanaf de camera in Sharepoint plaatsen, zijn deze heel erg groot.
Ze moeten eerst worden verkleind(Gecomprimeerd) om de internetpagina nog snel te kunnen laden.
Om de afbeeldingen bij het uploaden te verkleinen en meerdere afbeeldingen tegelijkertijd te uploaden, hebben we ​Internet Explorer 9 met Office 2010 nodig. [...]]]></description>
			<content:encoded><![CDATA[<div class="ExternalClassBDBC18AC190A4C8B94CCAE9A2169748B">
<h1 class="ms-rteElement-H1B">Het plaatsen(Uploaden) van afbeeldingen in Sharepoint 2010.</h1>
<p class="ms-rteElement-P">Wanneer we foto&#8217;s direct vanaf de camera in Sharepoint plaatsen,<span> </span>zijn deze heel erg groot.<br />
Ze moeten eerst worden verkleind(Gecomprimeerd) om de internetpagina nog snel te kunnen laden.</p>
<p class="ms-rteElement-P">Om de afbeeldingen bij het uploaden te verkleinen en meerdere afbeeldingen tegelijkertijd te uploaden, hebben we ​Internet Explorer 9 met Office 2010 nodig. Via andere Browsers zoals: Safari, Chrome, Firefox en Opera kunnen we volgens deze methode de afbeeldingen 1 voor 1 <span> </span>in Sharepoint plaatsen. Bovendien moeten de afbeeldingen voordat ze worden geplaatst, handmatig worden verkleind.<span id="more-221"></span></p>
<p class="ms-rteElement-P">In dit voorbeeld gebruik ik Kerst foto&#8217;s voor Havo Leerlingen 2011-2012.</p>
<div class="ExternalClass0A7F8DFF68694968AF2970E4007F0326">
<p class="ms-rteElement-P">Er moet een bepaalde indeling worden gemaakt om al deze foto&#8217;s terug te vinden. Voor de Kerstfoto&#8217;s lijkt het me handig om een map 1112(Het jaar 2011/2012) aan te maken en dan een map Havo2 en vervolgens een map 12_Kerst (Het nummer van de maand gevolgd door een korte omschrijving).</p>
<p class="ms-rteElement-P">Nu kan er snel iets gevonden worden van een klas uit een bepaald jaar&#8230;</p>
<div style="text-align: center"><img class="alignnone size-full wp-image-222" title="001 Mapstructuur" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/001-Mapstructuur.JPG" alt="001 Mapstructuur" width="153" height="195" /></div>
<h3 class="ms-rteElement-H4B">Hebben jullie hier betere ideeën over, plaats ze dan bij opmerkingen!</h3>
</div>
<h2 class="ms-rteElement-H2B">1: Het aanmaken van een afbeeldingen bibliotheek.</h2>
<div class="ExternalClass0A7F8DFF68694968AF2970E4007F0326">
<ul>
<li>Kies Siteacties-&gt; Meer opties&#8230;</li>
</ul>
</div>
<div class="ExternalClass42979CEA3793415C825A1DCD4B042FF9" style="text-align: center"><img class="alignnone size-full wp-image-223" title="002 siteakties Meer opties" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/002-siteakties-Meer-opties.JPG" alt="002 siteakties Meer opties" width="250" height="253" /></div>
<div class="ExternalClass42979CEA3793415C825A1DCD4B042FF9">
<ul>
<li>Selecteer Afbeeldingsbibliotheek noem deze Fotoalbum en klik Maken.</li>
</ul>
</div>
<p style="text-align: center">
<div style="text-align: center;"><img class="alignnone size-medium wp-image-224" title="003 maak Fotoalbum" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/003-maak-Fotoalbum-300x107.jpg" alt="003 maak Fotoalbum" width="300" height="107" /></div>
<ul>
<li>Aanmaken mappen via Nieuw-&gt; Nieuwe Map</li>
</ul>
<div style="text-align: center">
<div><img class="alignnone size-medium wp-image-228" title="004 maak Nieuwe map" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/004-maak-Nieuwe-map1-300x82.jpg" alt="004 maak Nieuwe map" width="300" height="82" /></div>
</div>
<ul>
<li>Maak de map 1112 aan en klik Opslaan</li>
</ul>
<div style="text-align: center"><img class="alignnone size-medium wp-image-226" title="005 Nieuwe map" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/005-Nieuwe-map-300x168.jpg" alt="005 Nieuwe map" width="300" height="168" /></div>
<ul>
<li>Open de map 1112</li>
</ul>
<p style="text-align: center"><img class="alignnone size-medium wp-image-227" title="006 Aangemaakte mappen" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2012/02/006-Aangemaakte-mappen-300x191.jpg" alt="006 Aangemaakte mappen" width="300" height="191" /></p>
<ul>
<li>Maak aan de Map HAVO2 en daarin de Map 12_Kerst</li>
</ul>
<p>Nu de mappen aangemaakt zijn kunnen we de bestanden plaatsen(Uploaden).</p>
<div>
<h2 class="ms-rteElement-H2B">2: Het uploaden van meerdere bestanden</h2>
<p class="ms-rteElement-P">Bekijk onderstaande video voor het uploaden en comprimeren van meerdere afbeeldingen.</p>
<p class="ms-rteElement-P">LET OP! Het kunnen uploaden van meerdere bestanden en deze meteen verkleinen lukt alleen in Internet Explorer met Office 2010 +</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="853" height="480" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FPoye90yIAM?version=3&amp;hl=nl_NL" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="853" height="480" src="http://www.youtube.com/v/FPoye90yIAM?version=3&amp;hl=nl_NL" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/artikelen/meerdere-afbeeldingen-plaatsenuploaden-en-tegelijk-verkleinen-comprimeren-in-sp-2010/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SL4 Silverlight WCF RIA Servises Business Application Tutorial</title>
		<link>http://marcelmarnix.com/wordpress/tutorials/sl4-silverlight-wcf-ria-servises-business-application-tutorial</link>
		<comments>http://marcelmarnix.com/wordpress/tutorials/sl4-silverlight-wcf-ria-servises-business-application-tutorial#comments</comments>
		<pubDate>Fri, 25 Jun 2010 07:47:48 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Tutorials Lessen]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=205</guid>
		<description><![CDATA[De eerste stappen om een WCF RIA Services Business Applicatie te bouwen

De opzet van deze les is het snel en eenvoudig opzetten van een Microsoft Silverlight4 Business Application.
Brongegevens zijn te vinden op: http://channel9.msdn.com/learn/courses/Silverlight4/


Download de source bestanden en extract de SlEventManager.mdf database.
Maak een nieuw C# project,



 selecteer de Silverlight Business Application template en noem het project [...]]]></description>
			<content:encoded><![CDATA[<h1>De eerste stappen om een WCF RIA Services Business Applicatie te bouwen</h1>
<p><img class="alignleft size-full wp-image-206" title="Silverlight" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/Silverlight.png" alt="Silverlight" width="220" height="165" /></p>
<h3>De opzet van deze les is het snel en eenvoudig opzetten van een Microsoft Silverlight4 Business Application.</h3>
<p>Brongegevens zijn te vinden op: http://channel9.msdn.com/learn/courses/Silverlight4/</p>
<h3><span id="more-205"></span></h3>
<ul>
<li>Download de <a href="http://ecn.channel9.msdn.com/o9/learn/Silverlight4/Labs/SL4LOB_02_Event_Manager/Source.zip">source</a> bestanden en extract de <strong>SlEventManager.mdf</strong> database.</li>
<li>Maak een nieuw <strong>C# project</strong>,</li>
</ul>
<p style="text-align: center;"><img class="size-medium wp-image-207 alignnone" title="NewSilverlightBusinessApp" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/NewSilverlightBusinessApp-300x207.PNG" alt="NewSilverlightBusinessApp" width="300" height="207" /></p>
<ul>
<li> selecteer de <strong>Silverlight Business Application template</strong> en noem het project <strong>SlEventManager. </strong></li>
<li> Het <strong>SlEventManager</strong> <strong>project</strong> en <strong>SlEventManager <span style="text-decoration: underline;">Web</span> project</strong> zijn nu aangemaakt.</li>
<li>Kies binnen het <strong>Web project</strong> App_Data-&gt;add-&gt;existing item… en kies de <strong>SlEventManager.mdf</strong> database en voeg deze toe.</li>
<li>Dubbelklik in App_Data <strong>SlEventManager.mdf </strong>(deze wordt toegevoegd aan Server explorer).</li>
<li>In het <strong>.Web project</strong> kies add-&gt;new item… en selecteer onder data het <strong>ADO.NET Entity Data Model</strong> en noem het <strong>EventManagerDbModel.edmx</strong>.</li>
<li>Selecteer generate from database en kies Next&gt;</li>
</ul>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-208" title="EntityDataModelWizzard" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/EntityDataModelWizzard-300x267.png" alt="EntityDataModelWizzard" width="300" height="267" /></p>
<ul>
<li>Selecteer de database en kies Next&gt;</li>
<li>Kies de volgende tabellen:
<ul>
<li><strong> Attendee</strong></li>
<li><strong> AttendeeEvent</strong></li>
<li><strong> AttendeeScheduleTalk</strong></li>
<li><strong> Event</strong></li>
<li><strong> EventTrack</strong></li>
<li><strong> Talk</strong></li>
</ul>
</li>
<li>Vink aan: <strong>Pluralize or singularize generated object names</strong></li>
<li> (Omdat de tabellen enkelvoudig namen hebben bijv: Attendee zal het programma</li>
<li> hier voor de tabel automatisch Attendees van maken.</li>
<li> Met Nederlandse namen gaat dit meestal niet, project moet dan projecten worden).</li>
<li>Kies Build-&gt; Build Solution met het bouwen word de code bijgewerkt en kan het <strong>EDM</strong> gevonden worden.</li>
</ul>
<p style="text-align: center;"><img class="alignnone size-full wp-image-209" title="AddNewDomainServiceClass" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/AddNewDomainServiceClass.png" alt="AddNewDomainServiceClass" width="241" height="291" /></p>
<ul>
<li>In de <strong>Web</strong> Services map, Kies add-&gt;new item… en selecteer onder <strong>Web:</strong> <strong>Domain Service,</strong></li>
<li> noem deze <strong>EventManagerDomainService.cs</strong> en klik <strong>add</strong></li>
<li>Check alle <strong>entities</strong> (tabellen) en <strong>enable editing</strong>.</li>
<li> controleer of <strong>Generate associated classes for metadata</strong> aanstaat.</li>
<li>Klik OK</li>
</ul>
<p style="text-align: center;"><img class="alignnone size-full wp-image-212" title="DataSources" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/DataSources.png" alt="DataSources" width="216" height="221" /></p>
<ul>
<li>Build Solution</li>
<li>Nu is de database in het Data Sources Paneel te vinden (&lt;Shift&gt;&lt;Alt&gt;&lt;D&gt;)</li>
<li>Open Home.xaml in de Project/Views Map en verwijder de home, homepage content, StackPannel en ScrollViewer objecten.</li>
<li>Sleep de Event tabel in Home.xaml en maak deze op zodat er wat witruimte aan de zijkanten is.</li>
</ul>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-210" title="SlServerBusinessApp" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/06/SlIServerBusinessApp-300x206.PNG" alt="SlServerBusinessApp" width="300" height="206" /></p>
<ul>
<li>Klik op de bolletjes aan de rechter zijkant en onderkant van het DataGrid, zodat deze met de grootte van het formulier mee rekt.</li>
<li>Test de applicatie</li>
<li>Maak het<strong> datagrid</strong> op: Selecteer het datagrid, klik in het properties venster op de puntjes (…) naast collection.</li>
<li>Verwijder de EventID en IsLive kolommen en orden de kolommen: title, start date, end date, venue en description.</li>
<li>Zet de width van de Event Title op <strong>Auto</strong> en de width van Description op <strong>Star</strong> zodat alle ruimte wordt opgevuld welke niet in gebruik is bij de andere kolommen.</li>
</ul>
<p><img src="file:///C:/Users/Marcel/AppData/Local/Temp/moz-screenshot-1.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/tutorials/sl4-silverlight-wcf-ria-servises-business-application-tutorial/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeigniter index.php uit de URL verwijderen</title>
		<link>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-index-php-uit-de-url-verwijderen</link>
		<comments>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-index-php-uit-de-url-verwijderen#comments</comments>
		<pubDate>Thu, 07 Jan 2010 21:11:17 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Codeigniter]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=142</guid>
		<description><![CDATA[
Wanneer Codeigniter wordt geïnstalleerd zien alle URL&#8217;s er als volgt uit:
http://localhost/ci_doctrine/index.php/welcome
Lees verder om URL&#8217;s te krijgen zonder index.php zoals hieronder.
http://localhost/ci_doctrine/welcome

Verwijder index.php uit Codeigniter URL&#8217;s

Onze webserver moet rewrite_module aanstaan:



Maak een .htaccess bestand aan onder de ci_doctrine map. met de volgende code
&#60;IfModule mod_rewrite.c&#62;&#60;/pre&#62;
&#60;/li&#62;
&#60;/ul&#62;
&#60;pre&#62;    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-87" title="CodeIgniter" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/CodeIgniter.jpg" alt="CodeIgniter" width="120" height="130" /></p>
<p>Wanneer Codeigniter wordt geïnstalleerd zien alle URL&#8217;s er als volgt uit:</p>
<pre>http://localhost/ci_doctrine/index.php/welcome</pre>
<p>Lees verder om URL&#8217;s te krijgen zonder index.php zoals hieronder.</p>
<pre>http://localhost/ci_doctrine/welcome</pre>
<p><span id="more-142"></span></p>
<h3>Verwijder index.php uit Codeigniter URL&#8217;s</h3>
<ul>
<li>Onze webserver moet <strong>rewrite_module</strong> aanstaan:<br />
<img src="file:///C:/Users/MM9/AppData/Local/Temp/moz-screenshot-3.png" alt="" /><img class="aligncenter size-full wp-image-143" title="WampApacheModRewrite" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2010/01/WampApacheModRewrite.png" alt="WampApacheModRewrite" width="336" height="182" /></li>
</ul>
<ul>
<li>Maak een <strong>.htaccess</strong> bestand aan onder de ci_doctrine map. met de volgende code
<pre class="brush: xml;">&lt;IfModule mod_rewrite.c&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /ci_doctrine/index.php/$1 [L]
&lt;/IfModule&gt;
&lt;IfModule !mod_rewrite.c&gt;
    ErrorDocument 404 /ci_doctrine/index.php&lt;/pre&gt;
&lt;/IfModule&gt;</pre>
</li>
<li>Wijzig nu in <strong>system/application/config.php </strong><br />
<strong>$config['index_page']</strong></p>
<pre class="brush: php; light: true;">/*
&lt;pre&gt;&lt;pre&gt;|----------------------------------------------------------------------
&lt;ul&gt;
	&lt;li&gt;| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
&lt;pre&gt;&lt;strong&gt;
&lt;pre&gt;| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = &quot;&quot;;</pre>
</li>
</ul>
<p>Nu zal de volgende link moeten werken.</p>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" href="http://localhost/ci_doctrine/welcome">http://localhost/ci_doctrine/welcome</a></p>
<p>De standaard welkomst pagina is nu zichtbaar.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><img src="file:///C:/Users/mm9/AppData/Local/Temp/moz-screenshot.png" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-index-php-uit-de-url-verwijderen/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Codeigniter en Nederlandse taal, dutch Language Class</title>
		<link>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-en-nederlandse-taal-dutch-language-class</link>
		<comments>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-en-nederlandse-taal-dutch-language-class#comments</comments>
		<pubDate>Wed, 23 Dec 2009 10:26:06 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Codeigniter]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=86</guid>
		<description><![CDATA[In deze les (Tutorial) wordt uitgelegd hoe de Codeigniter Language class te gebruiken. 
De Taal bestanden zijn aangemaakt
De controller is haalt de benodigde waarden op uit het taalbestand en geeft deze door aan de view.
De Controller is aangepast om direct via de URL de taal te kunnen kiezen.]]></description>
			<content:encoded><![CDATA[<p><img src="file:///C:/Users/MM9/AppData/Local/Temp/moz-screenshot-2.png" alt="" /><img class="alignleft size-full wp-image-87" title="CodeIgniter" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/CodeIgniter.jpg" alt="CodeIgniter" width="120" height="130" />Hoe pas ik de code aan, zodat de <strong>uitvoer</strong> (front-end weergave)<strong> in het Nederlands</strong> is.</p>
<p>Hoe denken jullie over het schrijven van code,<br />
alles in het Engels?<br />
of bijvoorbeeld commentaar in het Nederlands?</p>
<p><span id="more-86"></span></p>
<h3>Welkom, de CI taal klasse:</h3>
<p>De meeste code is in het Engels en ook de uitvoer.<br />
We kunnen de uitvoer in meerdere talen weergeven door de <strong>Codeigniter language class</strong> te gebruiken.<br />
Er zijn meerdere manieren om dit in de URL te bewerken.</p>
<p>Standaard staat er bij codeigniter index.php in de URL,<br />
om deze te verwijderen bekijk het artikel <a href="http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-index-php-uit-de-url-verwijderen"><br />
Verwijder index.php uit de URL</a></p>
<p>Bijvoorbeeld:</p>
<ul>
<li>
<h4>De Taal aan het eind van de URL</h4>
</li>
</ul>
<p>http://localhost/&#8221;sitenaam&#8221;/&#8221;pagina (controller)&#8221;/<strong>lang/&#8221;Taal&#8221;</strong></p>
<pre class="brush: plain;">http://localhost/mijnsite/taaltest/lang/nl</pre>
<ul>
<li>
<h4>De Taal aan het &#8216;begin&#8217; van de URL met gebruik van de Internationalization (i18n) library</h4>
</li>
</ul>
<p>http://localhost/&#8221;sitenaam&#8221;/&#8221;<strong>Taal</strong>&#8220;/&#8221;pagina (controller)&#8221;</p>
<pre class="brush: plain;">http://localhost/mijnsite/nl/taaltest</pre>
<h3>We beginnen met het maken van de  taal bestanden.</h3>
<p>Hiervoor gelden de volgende regels:</p>
<ol>
<li>De bestanden worden geplaatst in:
<pre class="brush: plain; light: true;">application/language/”Taal”</pre>
</li>
<li> De bestanden <strong>moeten</strong> <strong>eindigen</strong> op <strong>_lang.php.</strong></li>
<li> De bestandsnamen geplaatst in de verschillende Taal mappen moeten dezelfde naam hebben.</li>
</ol>
<p><strong>Let Op! Met lege regels en spaties aan het eind van het bericht kunnen spaties of zelfs extra regels veroorzaakt  worden.</strong></p>
<ul>
<li>Creëer, het Engelse taal bestand:</li>
</ul>
<pre class="brush: plain; light: true;">application/language/english/langtest_lang.php</pre>
<pre class="brush: php;">&lt;?php
$lang['test'] = &quot;This is a test: &quot;;
$lang['another_test'] = &quot;This is another test: &quot;;</pre>
<p><strong>De sluitende PHP tag ?&gt; is weggelaten, om extra spaties en regeleinden te voorkomen</strong></p>
<ul>
<li>Maak de Nederlandse taal map aan:</li>
</ul>
<pre class="brush: plain; light: true;">application/language/dutch</pre>
<ul>
<li>Kopieer vanuit de map <strong>engels </strong>naar de map <strong>dutch</strong>:</li>
</ul>
<pre class="brush: plain; light: true;">index.html (met de forbidden melding)
en langtest_lang.php</pre>
<ul>
<li>Vertaal de Engelse waarden naar het Nederlands (niet de Variabele namen!):</li>
</ul>
<pre class="brush: plain; light: true;">application/language/dutch/langtest_lang.php</pre>
<pre class="brush: php;">&lt;?php
$lang['test'] = &quot;Dit is een test: &quot;;
$lang['another_test'] = &quot;Dit is nog een test: &quot;;</pre>
<h2>De taalbestanden in de praktijk</h2>
<p>Nu de taalbestanden zijn aangemaakt, kunnen we ze gaan testen.</p>
<h4>De langtest controller simpel voorbeeld</h4>
<pre class="brush: php;">&lt;?php
class LangTest extends Controller {

  public function index() {

    // Maak de array aan welke de gegevens bevat welke aan de view worden doorgegeven
    $data=array();

   // Laad het taal bestand
   // verander english in dutch om het Nederlandse taal bestand te laden
   $this-&gt;lang-&gt;load('langtest', 'english');

   // Stop de benodigde variabele namen vanuit het taal bestand in de data array
   $data['test']=$this-&gt;lang-&gt;line('test');
   $data['another_test']=$this-&gt;lang-&gt;line('another_test');

   $this-&gt;load-&gt;view('langtest_view', $data);
  }
}</pre>
<p>De index functie wordt standaard aangeroepen, hierbinnen starten we de langtest_view.</p>
<h4>De langtest view</h4>
<pre class="brush: xml;">&lt;!DOCTYPE html&gt;
&lt;html&gt;

 &lt;head&gt;
  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
  &lt;title&gt;Test&lt;/title&gt;
 &lt;/head&gt;

 &lt;body&gt;

 &lt;h1&gt;
  A test
 &lt;/h1&gt;

 &lt;h1&gt;
  Een  test
 &lt;/h1&gt;

 &lt;hr&gt;

 &lt;p&gt; &lt;?php echo $test ?&gt;&lt;/p&gt;
 &lt;p&gt; &lt;?php echo $another_test ?&gt;&lt;/p&gt;

 &lt;/body&gt;

&lt;/html&gt;</pre>
<p>Een simpele html pagina met twee test meldingen.</p>
<p>Test de controller langtestest</p>
<pre class="brush: plain; light: true;">http://localhost/&quot;De site naam&quot;/index.php/langtest</pre>
<h3>De Controller uitbreiden met de lang functie:</h3>
<p>Na het aanpassen van de langtest controller,  kunnen we ook direct een andere taal aanroepen in de URL</p>
<pre class="brush: plain; light: true;">http://localhost/&quot;De site naam&quot;/index.php/langtest/&quot;lang&quot;/&quot;taal&quot;</pre>
<ul>
<li>Voeg onderstaande functie toe aan /controller/langtest.php</li>
</ul>
<pre class="brush: php;">function lang($user_lang = 'en') { // De standaard taal is engels

  switch($user_lang) {

    case 'en':
      $this-&gt;lang-&gt;load('langtest', 'english');
      break;
    case 'du':
      $this-&gt;lang-&gt;load('langtest', 'dutch');
      break;
  }

  //Na het laden van het taal bestand kan de data array worden gevuld.
  $data['test']=$this-&gt;lang-&gt;line('test');
  $data['another_test']=$this-&gt;lang-&gt;line('another_test');

  $this-&gt;load-&gt;view('langtest_view', $data);
}</pre>
<p>Nu kan via de url direct een andere taal worden gekozen.</p>
<pre class="brush: plain; light: true;">http://localhost/&quot;De site naam&quot;/index.php/langtest/lang/en
of
http://localhost/&quot;De site naam&quot;/index.php/langtest/lang/du
</pre>
<h3>Samengevat</h3>
<p>In deze les wordt uitgelegd hoe de Codeigniter Language class kan worden gebruikt.</p>
<ul>
<li>De Taal bestanden zijn aangemaakt</li>
<li>De controller haalt de benodigde waarden op uit het taalbestand en geeft deze door aan de view.</li>
<li>De Controller is aangepast om direct via de URL een taal te kunnen kiezen.</li>
</ul>
<h2>Tips</h2>
<h3>Bestaande Nederlandse Taalbestanden:</h3>
<p>Om niet alles te hoeven typen is hier een link naar Dutch language files…<br />
<a href="http://codeigniter.com/forums/viewthread/46154/">http://codeigniter.com/forums/viewthread/46154/</a></p>
<h3><strong>Standaard taal via het IP-Adres </strong></h3>
<p>Er zijn ook mogelijkheden om het IP adres in een land van herkomst om te zetten. En dan de standaard taal van dat land te kiezen. Maar dan moet er natuurlijk wel een optie zijn om snel een andere taal te kiezen. Wanneer bijvoorbeeld in Rusland de site wordt geopend en er verschijnen allemaal Russische tekens, hoe vind je dan jouw taal? Zie <a href="http://v3.thewatchmakerproject.com/journal/469/how-to-make-an-ip-to-country-tool-with-php-and-mysql">http://v3.thewatchmakerproject.com/journal/469/how-to-make-an-ip-to-country-tool-with-php-and-mysql</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1140px; width: 1px; height: 1px;">
<pre> $data['test']='Dit is een test';</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-en-nederlandse-taal-dutch-language-class/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deel 2 Codeigniter met Doctrine de Basis</title>
		<link>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-met-doctrine-deel-2-de-basis</link>
		<comments>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-met-doctrine-deel-2-de-basis#comments</comments>
		<pubDate>Mon, 14 Dec 2009 22:47:31 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Doctrine]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=59</guid>
		<description><![CDATA[
In dit 2e Deel:
- We bekijken in het kort de basis concepten van CodeIgniter en Doctrine.
- Eerst bekijken we Controllers and Views in CodeIgniter.
- Dan oefenen we met Models in Doctrine.
Hier wordt alles een beetje anders vergeleken met andere Codeigniter tutorials.
- Op het laatst bekijken we het Doctrine Model en praten we over wat ons [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc' style="border: 1px solid rgb(183, 169, 154); padding: 10px; background-color: rgb(255, 255, 255); -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; margin-bottom: 20px;"><h4>Inhoudsopgave voor CodeIgniter met Doctrine Serie</h4><ol><li><a href='http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren' title='Deel 1 Codeigniter en Doctrine vanaf het begin – Installatie and Setup'>Deel 1 Codeigniter en Doctrine vanaf het begin – Installatie and Setup</a></li><li>Deel 2 Codeigniter met Doctrine de Basis</li></ol></div> <div><img class="alignleft" title="codeigniter_doctrine" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/codeigniter_doctrine.png" alt="codeigniter_doctrine" width="128" height="128" /></div>
<h2>In dit 2e Deel:</h2>
<div>- We bekijken in het kort de <strong>basis concepten</strong> van CodeIgniter en Doctrine.</div>
<div>- Eerst bekijken we <strong>Controllers</strong> and <strong>Views</strong> in CodeIgniter.</div>
<div>- Dan oefenen we met <strong>Models</strong> in Doctrine.<br />
Hier wordt alles een beetje anders vergeleken met andere Codeigniter tutorials.</div>
<div>- Op het laatst bekijken we het <strong>Doctrine Model</strong> en praten we over wat ons <strong>Hoofd project</strong> wordt.</div>
<div>
<h3>Voordat we starten zorg dat <span style="text-decoration: underline;"><a href="http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren">Deel1</a></span> volledig is doorlopen.</h3>
<p style="text-align: left;"><span id="more-59"></span>Met de bestanden van  <span style="text-decoration: underline;"><span style="text-decoration: underline;"><a href="http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren">Deel1</a></span></span>:</p>
<ul>
<li><strong>Verwijder</strong>: application/models/gebruiker.php</li>
<li><strong>Verwijder</strong>: application/controllers/hallo.php</li>
<li><strong>Verwijder tabel</strong>: gebruiker</li>
</ul>
<h3>CodeIgniter URL structuur</h3>
<p>Url’s in CodeIgniter kunnen er zo uit zien:</p>
<p>Deze url roept de <strong>controller class</strong> “CONTROLLER_NAAM” aan en roept zijn <strong>methode</strong> (functie) “METHODE_NAAM” aan:</p>
<pre class="brush: plain; light: true;">http://localhost/ci_doctrine/index.php/CONTROLLER_NAAM/METHODE_NAAM</pre>
<p>Hetzelfde als hiervoor, behalve de url roept de standaard <strong>index()</strong> methode aan:</p>
<pre class="brush: plain; light: true;">http://localhost/ci_doctrine/index.php/CONTROLLER_NAME</pre>
<p>Hetzelfde als hiervoor. Deze keer, geeft de url een waarde “WAARDE” door als een <strong>argument</strong> voor de controller methode:</p>
<pre class="brush: plain; light: true;">http://localhost/ci_doctrine/index.php/CONTROLLER_NAAM/METHODE_NAAM/WAARDE</pre>
<p>De waarde kan een Nummer of een string zijn.<br />
Er kunnen meer waarden aan de url worden toegevoegd voor het doorgeven van toevoegende waarden. <strong><br />
Voor meer info</strong>: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" rel="nofollow" href="http://codeigniter.com/user_guide/general/controllers.html#passinguri">Passing uri segments</a></p>
<h3>CodeIgniter <del>M</del>VC (<del>Model</del> – View – Controller)</h3>
<h4>Models</h4>
<p>We gaan <strong>Doctrine Model</strong>’s, gebruiken i.p.v. CodeIgniter. Later in deze les zal ik uitleggen waarom. Wil je toch meer weten over CodeIgniter Models, lees: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" rel="nofollow" href="http://codeigniter.com/user_guide/general/models.html">CodeIgniter Models</a></p>
<h4>Views</h4>
<ul>
<li>Views worden gemaakt onder <strong>application/views</strong> en hebben een bestandsnaam als: mijn_view.php</li>
<li>Het zijn de <strong>output templates</strong>. Ze kunnen html, javascript en meer bevatten.</li>
<li>Gewoonlijk bevatten views <strong>PHP</strong> code. (Om boodschappen door te geven, lussen uit te voeren etc…)</li>
<li>Normaal laden Controllers, views om de uitvoer weer te geven.</li>
</ul>
<p><strong>Officiële documentatie:</strong> <a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" rel="nofollow" href="http://codeigniter.com/user_guide/general/views.html">CodeIgniter Views</a></p>
<h4>Controllers</h4>
<p>We hebben dit al behandeld in <a href="http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren">Deel 1</a>. Bekijk de sectie <strong>“</strong><strong>Snelle CodeIgniter cursus: Controllers</strong><strong>”</strong>.</p>
<h4>Controller en View bij elkaar</h4>
<p>Hier is een voorbeeld View</p>
<pre class="brush: plain; light: true;">application/views/my_view.php</pre>
<pre class="brush: php;">Een beetje text.

  &lt;div&gt;
    Men kan zelfs HTML gebruiken.
  &lt;/div&gt;

  &lt;div&gt;
   Geef variabelen doorgeven van de controller weer: &lt;br /&gt;
   &lt;?php echo $boodschap; ?&gt; &lt;br /&gt;
   &lt;?php echo $nog_een_boodschap; ?&gt;
  &lt;/div&gt;

Men kan lussen gebruiken: &lt;br /&gt;
  &lt;?php for ($i = 0; $i &lt; 3; $i++) {

   echo &quot;Teller geeft weer: $i &lt;br /&gt;&quot;;

  } ?&gt;

Of in alternatieve syntaxis: &lt;br /&gt;
  &lt;?php for ($i = 0; $i &lt; 3; $i++): ?&gt;

   Teller geeft weer: &lt;?php echo $i; ?&gt; &lt;br /&gt;

  &lt;?php endfor; ?&gt;</pre>
<p>Hier is een voorbeeld Controller, deze laad de view:</p>
<pre class="brush: plain; light: true;">application/controllers/sample_controller.php</pre>
<pre class="brush: php;">class Sample_controller extends Controller {

   function index() {
     $data = array();
     $data['message'] = &quot;index was aangeroepen&quot;;
     $data['another_message'] = &quot;blah blah&quot;;

     $this-&gt;load-&gt;view('my_view',$data);
   }

}</pre>
<p>Beide url’s werken:</p>
<pre class="brush: plain; light: true;">http://localhost/ci_doctrine/index.php/sample_controller/index
http://localhost/ci_doctrine/index.php/sample_controller</pre>
<p>De browser geeft weer:</p>
<pre class="brush: plain; light: true;">Een stukje tekst.
Men kan HTML gebruiken.
Geef variabelen weer vanuit de controller:
index was aangeroepen
blah blah
Je kunt zelfs lussen gebruiken:
Teller geeft weer: 0
Teller geeft weer: 1
Teller geeft weer: 2
Of in alternatieve syntaxis:
Teller geeft weer: 0
Teller geeft weer: 1
Teller geeft weer: 2</pre>
<p><strong>Let op!:</strong></p>
<ul>
<li>View bevat een combinatie van <strong>ruwe uitvoer</strong> en <strong>simpele PHP</strong>.</li>
<li>index() is de <strong>Standaard</strong> Controller functie, du die hoeven we niet in de url te plaatsen.</li>
<li>$this-&gt;load-&gt;view(’my_view’,$data) <strong>laad</strong> de view en voert hem door naar de browser.</li>
<li>Het eerste argument ‘my_view’ is de <strong>naam van het view bestand</strong>, zonder het .php stuk.</li>
<li>Het tweede argument $data is een array, welke de waarden aan de view doorgeeft.</li>
<li><strong>Voorbeeld</strong>: $data['boodschap'] <strong>wordt $boodschap</strong>, en $data['nog_een_boodschap] <strong>wordt $nog_een_boodschap</strong>, in onze view.</li>
</ul>
<p>(Wanneer je de bestanden hebt aangemaakt om de code te testen, dan kun je ze nu verwijderen. We gaan ze niet  meer gebruiken in ons project.)</p>
<h3>Doctrine Models</h3>
<p>Models zijn klassen welke data presenteren (vanuit de database). Bijvoorbeeld, Je kunt een tabel hebben genaamd <strong>user</strong>.  We kunnen een Model Class bouwen genaamd “User” welke de records in de tabel vertegenwoordigd(vasthoud).  Onze Model klasse zou <strong>CRUD</strong> (Create, Read, Update and Delete) handelingen moeten kunnen uitvoeren.  Gelukkig, Doctrine is een grote hulp om dit voor elkaar te krijgen met minimale en schone code.</p>
<h4>Verschillen in gebruik (vergeleken met CodeIgniter Models)</h4>
<ul>
<li>Ze extenden(overhandigen) de <strong>Doctrine_Record</strong> class<br />
(i.p.v. de “Model” class).</li>
<li>Ze kunnen als volgt geladen worden: <strong>$u = new User();</strong><br />
(i.p.v.: <strong>$u = $this-&gt;load-&gt;model(’user’);</strong>)<br />
met dank aan Doctrine&#8217;s <strong>autoload</strong> welke we in onze plugin hebben geregistreerd.</li>
<li>Het is niet PHP4 compatible.</li>
</ul>
<p>Dat is alles wat je nu moet weten.  Het zal een makkelijke overgang zijn voor diegene die CodeIgniter al gebruikt.</p>
<h4>Hoe ziet Doctrine Model er uit?</h4>
<p>Hier is een kleine <strong>Vooruitblik</strong> op het soort Modellen welke we gaan bouwen.  In de volgende lessen gaan we daar gedetailleerder op in.</p>
<pre class="brush: php;">&lt;?php
class User extends Doctrine_Record
{

  // definieer tabel kolommen in deze functie
  public function setTableDefinition() {

     $this-&gt;hasColumn('username', 'string', 255);
     $this-&gt;hasColumn('password', 'string', 255);
     $this-&gt;hasColumn('email', 'string', 255, array(
     'email' =&gt; true // de email input kan gevalideerd worden
     ));

     // Support vele kolom types, inclusief enum
     $this-&gt;hasColumn('status', 'enum', null,
     array('values' =&gt; array('unverified', 'verified', 'disabled'))
     );
   }

   // set wat options
   public function setUp() {

     // maak een relatie met het Post model
     $this-&gt;hasMany('Post as Posts');

     // kan zelfs met zichzelf een relatie hebben
     $this-&gt;hasOne('User as Referer');

     // 'created_at' en 'updated_at' worden automatisch aangemaakt en bijgewerkt
     $this-&gt;actAs('Timestampable');

     // Het password veld krijgt een mutator veld toegewezen, voor automatische encryptie
     $this-&gt;hasMutator('password', 'md5Password');

   }

   // de mutator functie
   public function md5Password($value) {
     $this-&gt;_set('password', md5($value));
   }

}</pre>
<p>Wanneer we een Doctrine Model’s zoals deze hebben gebouwd, kunnen we allerlei database acties doen. Doctrine kan zelfs <strong>de tabel maken</strong> gebaseerd op alleen de informatie van de modellen. Houd in gedachten dat er andere manieren zijn om Doctrine Models te maken, Bijvoorbeeld gebruikmakend van Schema bestanden. Hier komen we later op terug.</p>
<h3>Blijf Gekluisterd&#8230;</h3>
<p>In het volgende deel, beginennen we met een project, het wordt een <strong>Message Board</strong> en waarschijnlijk meer… Dit is een goede keus door de vele relaties tussen models als : users, posts, threads, forums, groups, attachments enz… Tot de volgende keer!</p>
</div>
 <div class='series_links'><a href='http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren' title='Deel 1 Codeigniter en Doctrine vanaf het begin – Installatie and Setup'>Vorige in de serie</a> </div>]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-met-doctrine-deel-2-de-basis/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Deel 1 Codeigniter en Doctrine vanaf het begin – Installatie and Setup</title>
		<link>http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren</link>
		<comments>http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren#comments</comments>
		<pubDate>Mon, 14 Dec 2009 11:29:12 +0000</pubDate>
		<dc:creator>MarcelMarnix</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Doctrine]]></category>

		<guid isPermaLink="false">http://marcelmarnix.com/wordpress/?p=5</guid>
		<description><![CDATA[
In dit 1e deel
- We beginnen met de basis installatie van CodeIgniter en Doctrine als plugin.

Waarom Doctrine toevoegen aan CodeIgniter?
Create, Read, Update en Delete (CRUD)
Creëer, Lees, Bewerk en Verwijder bewerkingen worden veel makkelijker uitgevoerd
doordat Tabellen en hun Relaties als Objecten worden gezien.
Er zijn nog veel meer voordelen maar deze zullen we verderop behandelen.
Voor meer informatie: [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc' style="border: 1px solid rgb(183, 169, 154); padding: 10px; background-color: rgb(255, 255, 255); -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; margin-bottom: 20px;"><h4>Inhoudsopgave voor CodeIgniter met Doctrine Serie</h4><ol><li>Deel 1 Codeigniter en Doctrine vanaf het begin – Installatie and Setup</li><li><a href='http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-met-doctrine-deel-2-de-basis' title='Deel 2 Codeigniter met Doctrine de Basis'>Deel 2 Codeigniter met Doctrine de Basis</a></li></ol></div> <p><img class="size-full wp-image-14 alignleft" title="codeigniter_doctrine" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/codeigniter_doctrine.png" alt="CodeIgniter + Doctrine" width="102" height="102" /></p>
<h2>In dit 1e deel</h2>
<p>- We beginnen met de basis installatie van CodeIgniter en Doctrine als plugin.</p>
<p><span id="more-5"></span></p>
<h3>Waarom Doctrine toevoegen aan CodeIgniter?</h3>
<p><strong>C</strong>reate, <strong>R</strong>ead, <strong>U</strong>pdate en <strong>D</strong>elete (<strong>CRUD</strong>)</p>
<p>Creëer, Lees, Bewerk en Verwijder bewerkingen worden veel makkelijker uitgevoerd<br />
doordat <strong>Tabellen </strong>en hun <strong>Relaties </strong>als <strong>Objecten </strong>worden gezien.</p>
<p>Er zijn nog veel meer voordelen maar deze zullen we verderop behandelen.<br />
Voor meer informatie: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.doctrine-project.org');" rel="nofollow" href="http://www.doctrine-project.org/documentation/manual/1_1/en/introduction" target="_blank">Doctrine Introductie (Engels)</a></p>
<p><img class="aligncenter size-full wp-image-23" title="ci_doctrine_model" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/ci_doctrine_model1.png" alt="ci_doctrine_model" width="600" height="900" /></p>
<p>In bovenstaand voorbeeld spreekt de <strong>Controller </strong>van <strong>Codeigniter </strong>het Doctrine <strong>ORM </strong>i.p.v. het <strong>Model </strong>aan.</p>
<p>We gebruiken MySQL database maar door de <strong>PDO</strong> kan er ook een andere database worden gekozen.</p>
<h3>De Eerste stap, het opzetten van de ontwikkelomgeving</h3>
<p>Wanneer er al een <strong>Webserver met PHP en MySQL</strong> is geïnstalleerd, kun je sommige van deze stappen overslaan.</p>
<ul>
<li>Download en installeer <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.wampserver.com');" href="http://www.wampserver.com/en/">WAMP</a> (voor Mac: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.mamp.info');" rel="nofollow" href="http://www.mamp.info/">MAMP</a>)<br />
<em>Waarschuwing <strong>Skype</strong> gebruikers: Eerst moet Skype worden afgesloten door een poort conflict, na opstarten van wamp kan skype weer worden gestart.</em></li>
<li>Bezoek <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/">http://localhost/</a> in je browser en check of de link werkt.</li>
<li>Open de &#8220;www&#8221; folder onder de WAMP installatie (Standaard <strong>C:\WAMP\WWW\</strong> ).</li>
<li>Maak hierin de folder &#8220;<strong>ci_doctrine</strong>&#8221; aan.</li>
</ul>
<h3>Installeer CodeIgniter</h3>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/downloads/">Download CodeIgniter</a></li>
<li>Pak het bestand uit in de  “ci_doctrine″ map.</li>
<li>Voor een goed overzicht verwijder ik altijd de “user_guide” folder en haal de apps map buiten de system map.</li>
</ul>
<p>De nieuwe mappen zien er zo uit:</p>
<div id="attachment_40" class="wp-caption aligncenter" style="width: 175px"><img class="size-full wp-image-40" title="vbCiInstall" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/vbCiInstall.png" alt="Installatie CI" width="165" height="250" /><p class="wp-caption-text">Installatie CI</p></div>
<p>In de ci_doctrine map, bevindt zich &#8220;index.php&#8221;</p>
<ul>
<li>Ga naar <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/ci_doctrine">http://localhost/ci_doctrine</a></li>
</ul>
<ul>
<li>Check of onderstaand voorbeeld te zien is:</li>
</ul>
<p style="text-align: center;"><img class="aligncenter" title="ci_doctrine_day1_3" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_3.png" alt="ci_doctrine_day1_3" width="500" height="276" /></p>
<h3>Snelle CodeIgniter cursus: Controllers</h3>
<p><strong>Controllers</strong> worden aangeroepen met het laden van iedere pagina.<br />
Controller staan onder:</p>
<pre>ci_doctrine/application/controllers/</pre>
<p>De <strong>url</strong> ziet er als volgt uit:</p>
<pre>http://localhost/ci_doctrine/index.php/CONTROLLER_NAAM/FUNCTION_NAAM</pre>
<p>Bijvoorbeeld wanneer de volgende url wordt geopend:</p>
<pre>http://localhost/ci_doctrine/index.php/hallo/wereld</pre>
<p>CodeIgniter zoekt naar<strong> controller classe</strong> genaamd “Hallo” en roept zijn <strong>methode</strong> “wereld()” aan.</p>
<h3>Onze eerste Controller</h3>
<ul>
<li>Maak het bestand aan:</li>
<pre>ci_doctrine/application/controllers/hallo.php</pre>
</ul>
<pre class="brush: php;">&lt;?php
//application/controllers/hallo.php

class Hallo extends Controller {

 function wereld() {
   echo &quot;Hallo CodeIgniter!&quot;;
 }

}</pre>
<ul>
<li>Ga naar: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/ci_doctrine/index.php/hallo/wereld">http://localhost/ci_doctrine/index.php/hallo/wereld</a></li>
</ul>
<p>Nu zie je:</p>
<pre>Hallo CodeIgniter!</pre>
<p><strong>Let op!:</strong></p>
<ul>
<li>De <strong>klasse </strong>moet de controller <strong>extenden (uitbreiden)</strong>.</li>
<li>De <strong>klasse </strong>moet <strong>beginnen </strong>met een <strong>Hoofdletter</strong>.</li>
<li>De <strong>bestandsnaam </strong>moet met <strong>kleine letters</strong> zijn geschreven.</li>
</ul>
<p><strong>Aanbevolen leesmateriaal:</strong></p>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" rel="nofollow" href="http://codeigniter.com/user_guide/general/controllers.html">http://codeigniter.com/user_guide/general/controllers.html</a></li>
</ul>
<h3>Install Doctrine</h3>
<p>In CodeIgniter gaan we Doctrine  als <strong>plug-in</strong> installeren.</p>
<ul>
<li>Maak de map: application/plugins</li>
<li>Maak de map: application/plugins/doctrine</li>
<li><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.doctrine-project.org');" href="http://www.doctrine-project.org/download">Download Doctrine</a></li>
<li>Pak alleen de folder “lib” uit naar<strong> application/plugins/doctrine</strong>.</li>
</ul>
<p>Onze map ziet er als volgt uit:</p>
<p><img class="aligncenter size-full wp-image-52" title="DoctrineInstallStructure" src="http://marcelmarnix.com/wordpress/wp-content/uploads/2009/12/DoctrineInstallStructure1.png" alt="DoctrineInstallStructure" width="233" height="293" /></p>
<ul>
<li>Maak het plugin bestand: <strong>application/plugins/doctrine_pi.php</strong></li>
</ul>
<pre class="brush: php;">&lt;?php
// system/application/plugins/doctrine_pi.php

// laad Doctrine bibliotheek
require_once APPPATH.'/plugins/doctrine/lib/Doctrine.php';

// laad database configuratie uit CodeIgniter
require_once APPPATH.'/config/database.php';

// hier worden de Doctrine Model classes automatisch geladen
spl_autoload_register(array('Doctrine', 'autoload'));

// We laden onze database connecties in Doctrine_Manager
// Met deze lus kunnen we later meerdere connecties hebben
foreach ($db as $connection_name =&gt; $db_values) {

 // Eerst moeten we converteren naar het DSN formaat
 $dsn = $db[$connection_name]['dbdriver'] .
 '://' . $db[$connection_name]['username'] .
 ':' . $db[$connection_name]['password'].
 '@' . $db[$connection_name]['hostname'] .
 '/' . $db[$connection_name]['database'];

 Doctrine_Manager::connection($dsn,$connection_name);
}

// CodeIgniter's Model classe moet geladen worden
require_once BASEPATH.'/libraries/Model.php';

//Vertrl Doctrine waar onze models staan
Doctrine::loadModels(APPPATH.'/models');

// (OPTIONAL) CONFIGURATION BELOW

// Hierdoor kunnen we &quot;mutators&quot; gebruiken
Doctrine_Manager::getInstance()-&gt;setAttribute(
 Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);

// Dit zet standaard alle tabel kolommen op &quot;notnull&quot; en &quot;unsigned&quot; (voor ints)
Doctrine_Manager::getInstance()-&gt;setAttribute(
 Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
 array('notnull' =&gt; true, 'unsigned' =&gt; true));

//Noem de standaard primaire sleutel  'id', integer, 4 bytes
Doctrine_Manager::getInstance()-&gt;setAttribute(
 Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
 array('name' =&gt; 'id', 'type' =&gt; 'integer', 'length' =&gt; 4)); </pre>
<p>Probeer het commentaar in de code te lezen ( later begrijp je het beter).</p>
<h3>Database Setup en Configuratie</h3>
<ul>
<li>Open <strong>phpMyAdmin</strong>: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/phpmyadmin/">http://localhost/phpmyadmin/</a></li>
<li>Maak een <strong>database</strong> en noem deze “ci_doctrine”</li>
</ul>
<p><img title="ci_doctrine_day1_6" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_6.png" alt="ci_doctrine_day1_6" width="553" height="400" /></p>
<ul>
<li>Wijzig Bestand:  application/config/database.php</li>
<li>Zoek onderstaande zinnen en voer de waarden in.</li>
</ul>
<pre class="brush: php;"> // in application/config/database.php
// ...

$db['default']['hostname'] = &quot;localhost&quot;;
$db['default']['username'] = &quot;root&quot;;
$db['default']['password'] = &quot;&quot;; //Of een eigen wachtwoord wanneer de database goed beveiligd is
$db['default']['database'] = &quot;ci_doctrine&quot;;

// ...</pre>
<p>We hebben net het <strong>database configuratie bestand van </strong>CodeIgniter aangepast.</p>
<h3>Nog meer Configureren&#8230;</h3>
<h4>config.php</h4>
<ul>
<li>Wijzig bestand: <strong>application/config/config.php</strong></li>
</ul>
<pre class="brush: php;">// in application/config/config.php
// ...

$config['base_url']    = &quot;http://localhost/ci_doctrine/&quot;;

// ...</pre>
<p>Nu weet Codeigniter de URL van onze site.</p>
<h4>autoload.php</h4>
<ul>
<li>Wijzig bestand: <strong>application/config/autoload.php</strong></li>
</ul>
<pre class="brush: php;">// in application/config/autoload.php
// ...

$autoload['plugin'] = array('doctrine');

// ... </pre>
<p>Deze code zorgt ervoor dat de Doctrine plug-in altijd wordt geladen.</p>
<h4>Klaar!</h4>
<p>Nu kunnen we met het echte werk beginnen. Laten we met de setup starten.</p>
<h3>Ons Eerste Doctrine Model</h3>
<h4>Maak de user Tabel</h4>
<ul>
<li>Open phpMyAdmin: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/phpmyadmin/">http://localhost/phpmyadmin/</a></li>
<li>Ga naar database “ci_doctrine”</li>
<li>Maak een tabel “user” met de volgende kolommen:<br />
id =&gt; int, primary key, auto_increment,<br />
username =&gt; varchar(255), unique,<br />
password =&gt; varchar(255),<br />
first_name =&gt; varchar(255),<br />
last_name =&gt; varchar(255)</li>
</ul>
<p>De onderstaande <strong>query </strong>kan in de SQL veld van PHPMyadmin worden geplakt:</p>
<pre>CREATE TABLE `ci_doctrine`.`user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`first_name` VARCHAR( 255 ) NOT NULL ,
`last_name` VARCHAR( 255 ) NOT NULL ,
UNIQUE (
`username`
)
)</pre>
<p><img title="ci_doctrine_day1_7" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_7.png" alt="ci_doctrine_day1_7" width="552" height="481" /></p>
<h4>Maak het Model</h4>
<ul>
<li>Maak bestand: <strong>application/models/user.php</strong></li>
</ul>
<pre class="brush: php;">&lt;?php
// system/application/models/user.php
class User extends Doctrine_Record {

 public function setTableDefinition() {
 $this-&gt;hasColumn('username', 'string', 255);
 $this-&gt;hasColumn('password', 'string', 255);
 $this-&gt;hasColumn('first_name', 'string', 255);
 $this-&gt;hasColumn('last_name', 'string', 255);
 }

}</pre>
<p><strong>Let op!:</strong></p>
<ul>
<li>We extenden <strong>Doctrine_Record</strong>, i.p.v. <strong>Model</strong> (Normaal gebruik je de CodeIgniter models).</li>
<li>Binnen de setTableDefinition() moeten we de tabel structuur definiëren.</li>
<li>Standaard kijkt Doctrine naar een tabel met dezelfde naam, in dit geval: “user”. (Deze kan veranderd worden)</li>
<li>In ons doctrine_pi.php hierboven, hebben we al een standaard primaire “id” sleutel aangemaakt. Hierdoor hoeven we deze niet in onze User classe te plaatsen.</li>
</ul>
<h4>Test het Model: Voeg wat gebruikers (Users) toe</h4>
<ul>
<li>Pas onze controller welke we eerder gemaakt hebben aan: <strong>application/controllers/hallo.php</strong></li>
</ul>
<pre class="brush: php;">&lt;?php
// system/application/controllers/hallo.php

class Hallo extends Controller {

 function world() {
   echo &quot;Hallo CodeIgniter!&quot;;
 }

 function user_test() {

   $u = new User;
   $u-&gt;username = 'johndoe';
   $u-&gt;password = 'secret';
   $u-&gt;first_name = 'John';
   $u-&gt;last_name = 'Doe';
   $u-&gt;save();

   $u2 = new User;
   $u2-&gt;username = 'phprocks';
   $u2-&gt;password = 'mypass';
   $u2-&gt;first_name = 'Codeigniter';
   $u2-&gt;last_name = 'Doctrine';
   $u2-&gt;save();

   echo &quot;2 Gebruikers toegevoegd&quot;;
 }

}</pre>
<p>We hebben net 2 objecten aangemaakt en met gegevens voorzien. Wanneer <strong>save()</strong> wordt aangeroepen worden de gegevens opgeslagen in de database.</p>
<p><strong>Let op!:</strong></p>
<ul>
<li>We kunnen de velden als <strong>parameters</strong> benaderen (bijv. $u-&gt;username), ook al hebben we ze niet aangemaakt als classe parameters. Is Doctrine niet mooi?</li>
<li>Wanneer je bekend bent met CodeIgniter, moet de $this-&gt;load-&gt;model() function angeroepen worden om de modellen te laden. Maar nu we de <strong>autoload</strong> functie van Doctrine hebben geregistreerd, hoeven we  alleen maar te zeggen: “new User;”</li>
<li>We hebben de “save()” functie niet gemaakt, omdat deze uit de Doctrine_Record classe komt welke we extenden. Het slaat het object in de database op. Verder in deze lessen komen er nog veel meer leuke funties en handigheidjes in de Doctrine classen.</li>
</ul>
<ul>
<li>Open: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" href="http://localhost/ci_doctrine/index.php/hallo/user_test">http://localhost/ci_doctrine/index.php/hallo/user_test</a></li>
</ul>
<p>Onderstaande zou moeten verschijnen:</p>
<pre>
<pre>2 Gebruikers toegevoegd</pre>
</pre>
<ul>
<li>Ga nu terug naar: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/phpmyadmin/">http://localhost/phpmyadmin/</a></li>
<li>Verken de tabel ‘user’</li>
</ul>
<p><strong>Voila!</strong> Nu zouden 2 twee records zichtbaar moeten zijn welke we hebben aangemaakt.</p>
<p><img title="ci_doctrine_day1_8" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_8.png" alt="ci_doctrine_day1_8" width="530" height="405" /></p>
<h3>Samengevat&#8230;</h3>
<p>We hebben <strong>CodeIgniter </strong>met <strong>Doctrine geïnstalleerd</strong>. Het duurde even voor het werkte,<br />
maar nu hebben we een <strong>MVC framework </strong>en <strong>ORM</strong> <strong>combinatie</strong>.</p>
<p>In de volgende lessen, zal ik nuttigere voorbeelden  en uiteindelijk een  een functionele website bouwen.<br />
Met Doctrine kunnen heel makkelijk <strong>modellen </strong>gemaakt worden welke <strong>tijd besparen</strong> waardoor we niet steeds opnieuw <strong>CRUD</strong> (Create, read, update and delete) functies hoeven te schrijven in al onze modellen.</p>
<p>Doctrine helpt ook met het afhandelen van relaties tussen onze klassen, en kunnen we complexe logische code en query&#8217;s ontlopen.</p>
<p>Tot de volgende keer!</p>
 <div class='series_links'> <a href='http://marcelmarnix.com/wordpress/tutorials/codeigniter/codeigniter-met-doctrine-deel-2-de-basis' title='Deel 2 Codeigniter met Doctrine de Basis'>Volgende in de serie</a></div>]]></content:encoded>
			<wfw:commentRss>http://marcelmarnix.com/wordpress/tutorials/codeigniter/deel1-codeigniter-en-doctrine-installeren/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

