Laravel: processing checkbox

Laravel is a great web application framework with expressive, elegant syntax. Learning a framework can be challenging but the Laravel framework makes a programmers life easier. One thing that got easier is creating and processing submitted forms. One of the more “difficult” form components is a checkbox. Therefor a quick tip how to process them.

Let’s say we want a user to check a checkbox by which he agrees to have read a text:

{{ Form::open() }}
    ...
    {{ Form::checkbox('read_text', 'yes') }}
    {{ Form::submit('Save') }}
{{ Form::close() }}

The checkbox is submitted when the checkbox is checked, otherwise it won’t be submitted. The only thing we have to do to ensure the checkbox is checked, is to see if the key is submitted:

$checked = Input::has('read_text');

If the checkbox is checked this will be true otherwise it will be false. Enjoy the absolute beauty of the Laravel framework!Laravel is een zeer goed PHP framework. De leercurve van een framework kan soms steil zijn, maar het Laravel framework maakt het werk van een programmeur gemakkelijker. Een onderdeel dat gemakkelijker is geworden met dit framework is het maken en verwerken van verstuurde formulieren. Sommige onderdelen van een formulier vereisen echter iets meer werk, waaronder de checkbox. In Laravel is ook dat ondervangen. Daarom een snelle tip hoe om te gaan met checkboxen.

Laten we zeggen dat een gebruiker moet aangeven dat die een tekst heeft gelezen. Dat levert de volgende code op:

{{ Form::open() }}
    ...
    {{ Form::checkbox('read_text', 'yes') }}
    {{ Form::submit('Save') }}
{{ Form::close() }}

De checkbox wordt alleen verstuurd wanneer die aangevinkt is. Wanneer dat niet het geval is, zal deze niet in de verstuurde data terug te vinden zijn. Het enige wat we dus hoeven doen, is te checken of de checkbox verstuurd is:

$checked = Input::has('read_text');

Indien de checkbox aangevinkt is, zal deze variabele true teruggeven, anders is die false.

PHP: alle bestanden uit een directory (inclusief onderliggende directories)

Met PHP is het eenvoudig om alle bestanden uit een directory te halen. Echter is het niet zo eenvoudig om ook de onderliggende bestanden ook gelijk op te halen. Gelukkig bied de volgende functie een oplossing:

/**
 * returns an array which contains all the files from a directory and it's
 * child dirs which has the given extension or returns false if the directory 
 * doesn't exists
 * 
 * @param string $dir path in which the files should be searched
 * @param mixed $ext extension which the files should have 
 * @return mixed
 */
function getFilesRecursive($dir, $ext = false) {
    $files = array();

    // dir must exists, this prevents errors
    if (!is_dir($dir)) {
        return false;
    }

    $handle = opendir($dir);
    while (false !== ($resource = readdir($handle))) {
        if (is_dir($dir . '/' . $resource) && ($resource != '.' && $resource != '..')) {
            $files = array_merge($files, getFilesRecursive($dir . '/' . $resource, $ext));
        }
        else if (!is_dir($dir . '/' . $resource)) {
            if (getFileExtension($dir . '/' . $resource) != $ext)
                continue;

            $files[] = $dir . '/' . $resource;
        }
    }
    closedir($handle);
    return $files;
}

Gebruik je deze functie of kan het misschien wel op een makkelijkere manier? Ik hoor het graag!

Relative urls naar absolute urls

Een website die gebruikt maakt van zaken als mod_rewrite maakt veelal gebruikt van relatieve urls.

Een absolute url bevat het protocol, het domeinnaam (eventueel met subdomein) en het aanvullende pad en/of bestandsnaam. Een relatieve url bevat enkel het pad en/of bestandsnaam.

Als je deze pagina wilt verwerken (denk aan het inlezen van alle items van een pagina), is het nodig om deze relatieve urls om te zetten naar absolute urls. Om dat in PHP voor elkaar te krijgen heb ik de volgende functie gemaakt.

Continue reading “Relative urls naar absolute urls”