\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{babipanghang} \pdfinfo{ /Title (learning-laravel.pdf) /Creator (Cheatography) /Author (babipanghang) /Subject (Learning Laravel Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A33817} \definecolor{LightBackground}{HTML}{F9F2F0} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Learning Laravel Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{babipanghang} via \textcolor{DarkBackground}{\uline{cheatography.com/109855/cs/21542/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}babipanghang \\ \uline{cheatography.com/babipanghang} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 23rd January, 2020.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Forms}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Er zijn 7 restful controller acties (conventie/richtlijn):\{\{nl\}\}`index`: toont een lijst van iets (artikelen, gebruikers, etc\{\{nl\}\}`show` toont een specifiek item (artikel, gebruiker etc)\{\{nl\}\}`create` toont een view om item aan te maken.\{\{nl\}\}`store` slaat item op.\{\{nl\}\}`edit` Toont een view om bestaand item aan te passen.\{\{nl\}\}`update` slaat wijzigingen op.\{\{nl\}\}`destroy` verwijdert item.\{\{nl\}\}\{\{nl\}\}Met de artisan optie -r kunnen deze automatisch aangemaakt worden bij het maken van een controller. Met de `-m Modelnaam` optie erbij wordt een bijpassend database model aangemaakt.} \tn % Row Count 12 (+ 12) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Browsers ondersteunen eigenlijk allen GET en POST requests. Om toch een PUT of ander soort request te simuleren vanuit een form, stel het formulier in op POST en voeg een `@method('PUT')` toe in het formulier.} \tn % Row Count 17 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Bij het doen van een POST, bijvoorbeeld vanuit een form, kan een 419 error ontstaan als resultaat van bescherming tegen XSS expoits. Door het toevoegen van een `@csrf` statement in de view na het \textless{}form\textgreater{} element wordt deze fout voorkomen.} \tn % Row Count 22 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Algemeen}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Alle resources (afb, JS, etc) in de `public` map.} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Routing}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Routes worden gedefiniëerd in `routes/web.php`} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Een route wordt gedefinieerd met\{\{nl\}\}`Route::get('url', \$data);`\{\{nl\}\}of\{\{nl\}\}`Route::get('url', function():view\{\}));`\{\{nl\}\}of\{\{nl\}\}`Route::get('/url/\{variabele\}', function(\$variabele)\{\});`\{\{nl\}\}of (om functie functionname in class controllerclass aan te roepen)\{\{nl\}\}`Route::get('/url/\{variabele\}', \seqsplit{'controllerclass@functionname');`}} \tn % Row Count 8 (+ 7) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Data die naar de view moet worden gestuurd moet gedaan worden in de closure functie in de routes file als\{\{nl\}\}`return view('viewnaam', {[}'key'=\textgreater{}'value'{]});`} \tn % Row Count 12 (+ 4) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{POST of GET argumenten kunnen worden opgevraagt met de \seqsplit{`request(\$argumentnaam)`} functie.} \tn % Row Count 14 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Foutafhandeling (404 pagina) wordt gestart met `abort(int \$statuscode, string 'bericht')` functie.)} \tn % Row Count 16 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Naast `Route::get('url, \$data)` zijn er ook `Route::post`, `Route::put` en `Route::delete`} \tn % Row Count 18 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Om toekomstbestendig te zijn kun je routes benoemen, als volgt:\{\{nl\}\}`Route::get('/articles/\{article\}', 'ArticlesController@show')-\textgreater{}name('articles.show');`\{\{nl\}\}In blade kan dan route worden weergegven met \{\{nl\}\}`\{\{ route('articles.show', \$article-\textgreater{}id) \}\}`} \tn % Row Count 24 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Artisan}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een nieuwe controller aanmaken:\{\{nl\}\}`make:controller ControllerNaam`} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Een eloquent model aanmaken:\{\{nl\}\}`make:model Modelnaam`} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een migratie aanmaken:\{\{nl\}\}`make:migration \seqsplit{genereer\_database\_object`}} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Een migratie toepassen:\{\{nl\}\}`migrate`} \tn % Row Count 7 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een migratie rollback:\{\{nl\}\}`migrate:rollback`} \tn % Row Count 8 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Database legen en migraties opnieuw uitvoeren:\{\{nl\}\}`migrate:fresh`} \tn % Row Count 10 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een migratie, factory en controller maken voor model:\{\{nl\}\}`make:model Project -a`} \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Blade language}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Escape variabelen met\{\{nl\}\}`\{\{ \$variabele \}\}`} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Variabelen expliciet NIET escapen met\{\{nl\}\}`\{!! \$variabele !!\}`} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Elementen in objecten weergevem met\{\{nl\}\}`\{\{ \$object-\textgreater{}element \}\}`} \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Een template kan bouwen op een andere door het\{\{nl\}\}`@extends \seqsplit{('bestandsnaam-zonder-extensie')`} commando} \tn % Row Count 8 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Er kan een sectie uit een template-bestand worden ingevoegd op de huidige positie met het\{\{nl\}\}`@yield('sectienaam')`\{\{nl\}\}commando.} \tn % Row Count 11 (+ 3) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Een sectie word gedefinieerd met\{\{nl\}\}`@section('sectienaam')`\{\{nl\}\} en geëindigd met\{\{nl\}\}`@endsection`} \tn % Row Count 14 (+ 3) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Veel PHP is gewoon beschikbaar, zoals\{\{nl\}\}`Request::path()`} \tn % Row Count 16 (+ 2) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Meerdere items zijn te plaatsen als\{\{nl\}\}`@foreach (\$articles as \$article)\{\{nl\}\}\textless{}li\textgreater{}Hier invoegen met \{\{ article-\textgreater{}title \}\}\textless{}/li\textgreater{}\{\{nl\}\}@endforeach`} \tn % Row Count 19 (+ 3) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{De asset map kan worden aagegeven met `\{\{ asset \}\}submap/bestandsnaam.css`} \tn % Row Count 21 (+ 2) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Foutmeldingen (zoals bij formvalidatiefouten) kunnen worden weergegeven met\{\{nl\}\}`\{\{ \$errors-\textgreater{}first('veldnaam') \}\}`} \tn % Row Count 24 (+ 3) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Alleen weergeven als een variabele/attribuut bestaat:\{\{nl\}\}`@if (\$errors-\textgreater{}has('title))\textless{}html\textgreater{}@endif`} \tn % Row Count 26 (+ 2) % Row 11 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Inline text plaatsen met conditie:\{\{nl\}\}`\{\{ \$errors-\textgreater{}has('title') ? 'tekst' : '' \}\}`} \tn % Row Count 28 (+ 2) % Row 12 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Bij foutmelding iets weergeven:\{\{nl\}\}`@error('veldnaam')\textless{}b\textgreater{} uw tekst hier \textless{}/b\textgreater{}@enderror`} \tn % Row Count 30 (+ 2) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Blade language (cont)}} \tn % Row 13 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een veldwaarde van een vorige submit invullen (zoals bij het falen van formvalidatie):\{\{nl\}\}`\{\{ old('veldnaam') \}\}`} \tn % Row Count 3 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Migrations (Database)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een migratie is een layout voor de database, of een aanpassing daaraan.} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Bestanden met migraties staan in `database/migrations`} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Voor development kunnen het beste bestaande migraties gewijzigd worden. Voor wijzigingen aan live servers maak een nieuwe migratie.} \tn % Row Count 7 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Controllers}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Controllers staan in `Http/Controllers`} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Request data kan worden opgevraagd met de `request('veldnaam)` functie.} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{De `request()` functie (zonder argumenten) retourneert een object met `validate(array \$opties)` functie, zoals dit:\{\{nl\}\}`request()-\textgreater{}validate({[}\{\{nl\}\} 'title' =\textgreater{} {[}'required', 'min:3', 'max:255'{]},\{\{nl\}\}'excerpt' =\textgreater{} 'required',\{\{nl\}\}'body' =\textgreater{} 'required'\{\{nl\}\}{]});`\{\{nl\}\}De validate() functie retourneert bovendien een array met valide elementen die gerefereerd kunnen worden bij verdere verwerking van de formuliergegevens.} \tn % Row Count 12 (+ 9) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{In controllers wordt vaak gegevens uit een DB gehaald met functies als\{\{nl\}\}`\$article = Article::findOrFail(\$id);`)\{\{nl\}\}er vanuitgaande dat er een eloquent model Article bestaat. In plaats daarvan kunnen we ook Laravel om het eloquent model vragen als argument op de functie, zoals\{\{nl\}\}`public function show(Article \$article)\{\{\{nl\}\}//code hier\{\{nl\}\}\}`\{\{nl\}\}De variabelenaam moet hierbij overeenkomen met een wildcard uit de route.} \tn % Row Count 21 (+ 9) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Model (Database)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Configuratie in `config/database.php` en in `.env` file in de root} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Eloquent modellen zijn classes die een database tabel representeren en queries kunnen uitgevoerd worden via deze class. Deze classes zijn een goede plaats voor functies om die tabel te manipuleren. Het resultaat van een query via een eloquent model is gerepresenteerd in diezelfde class.} \tn % Row Count 8 (+ 6) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Indien een eloquent model is aangemaakt kun je de namespace van het eloquent model importeren zoals\{\{nl\}\}`use App\textbackslash{}Modelnaam`\{\{nl\}\}en dan\{\{nl\}\}`Modelnaam:where('kolomnaam', \$waarde)-\textgreater{}first();`} \tn % Row Count 12 (+ 4) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Queries zien eruit als:\{\{nl\}\}`\textbackslash{}DB::table('tabelnaam')-\textgreater{}where('kolomnaam', \$waarde)-\textgreater{}first();`} \tn % Row Count 14 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{`-\textgreater{}firstOrFail()` haalt 1 waarde op of geeft 404. Soortgelijk voor de methode `findOrFail()`.} \tn % Row Count 16 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Eloquent modellen bevinden zich in `app/`} \tn % Row Count 17 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{de `all()` functie haalt alle records uit een tabel op. Zo zijn er ook de `first()` functie (eerste resultaat), `take(int \$aantal)` (gedefinieerd aantal records ophalen) en `paginate(int \$aantal-per-pagina)` (gepagineerd ophalen).} \tn % Row Count 22 (+ 5) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{De \seqsplit{`latest('datumveld-recordnaam')`} functie haalt meest recente record op. `find(\$id)` haalt een record op met id \$id.} \tn % Row Count 25 (+ 3) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Wildcards in routes worden standaard gematched naar het id veld in een database. Om de wildcard naar een ander veld te laten matchen, definiëer de functie\{\{nl\}\}`public function getRouteKeyName()\{\{\{nl\}\}return 'keynaam';\{\{nl\}\}\}`\{\{nl\}\}in het eloquent model.} \tn % Row Count 31 (+ 6) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Model (Database) (cont)}} \tn % Row 9 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Een nieuw record aanmaken kan als volgt:\{\{nl\}\}`\$article = new EloquentModelNaam();\{\{nl\}\}\$article-\textgreater{}title = request('title');\{\{nl\}\}\$article-\textgreater{}excerpt = request('excerpt');\{\{nl\}\}`\{\{nl\}\}Maar ook als:\{\{nl\}\}`EloquentModelNaam::create({[}\{\{nl\}\}'title' =\textgreater{} request('title'),\{\{nl\}\}'excerpt' =\textgreater{} request('excerpt')\{\{nl\}\}{]});`\{\{nl\}\}Bij deze laatste methode moet er opgepast worden: de array zou onbedoeld meer velden kunnen bevatten dan bedoeld. Daarom moet er bij Laravel in het eloquent model worden aangegeven welke velden met een publiek form in te vullen zijn door een class property \$fillable te definiëren:\{\{nl\}\}`protected \$fillable = {[}'title', 'excerpt'{]};`\{\{nl\}\}Alle velden expliciet {\bf{niet}} bewaken kan met\{\{nl\}\}`protected \$guarded = {[}{]};`} \tn % Row Count 15 (+ 15) % Row 10 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Relaties tussen eloquent models kunnen worden gedefiniëerd in een functie in een eloquent model. Bijvoorbeeld\{\{nl\}\}`return \$this-\textgreater{}hasMany(Article::class);`\{\{nl\}\} geeft een relatie aan met meerdere articles.} \tn % Row Count 20 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Views}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Views worden opgeslagen in `resources/views`} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Gegenereerde resources worden opgeslagen in de `resources` map. Overige in de `public` map.} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{In de `/webpack.mix.js` wordt aangegeven wat voor bestanden gecompileerd moeten worden, zoals SASS en enkele JS bestanden. Dit wordt gedefinieerd met een regel zoals\{\{nl\}\}`mix.sass('resources/sass/bestand.scss', 'public/doelmap');`} \tn % Row Count 8 (+ 5) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Het bestand `/package.json` definieert dependencies. Deze dependencies moeten met de hand geïnstalleerd worden met npm (op te halen via nodejs.org), met het commando `npm install`.} \tn % Row Count 12 (+ 4) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Resources compileren wordt in gang gezet met `npm dev`.} \tn % Row Count 14 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`npm run watch` houdt resources in de gaten en compileert ze automatisch.} \tn % Row Count 16 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}