Return to Snippet

Revision: 60996
at November 21, 2012 08:19 by halk


Initial Code
/**
 * THIS FUNCTION WILL RENDER A CONTAINER OR SELF-CLOSING HTML ELEMENT.
 * IT AUTO DETECTS WHAT TYPE YOU WANT
 * BASED ON RATHER OR NOT YOU SET A _data KEY IN THE ARRAY OF
 * ATTRIBUTES PASSED TO THE FUNCTION
 * 
 * USING AN ASSOCIATIVE ARRAY ATTRIBUTES ARE ASSIGNED TO THE ELEMENT
 * 
 * IF THE KEY _data IS SET IN THE $propBag ARRAY
 * _data WILL BE INSERTED BETWEEN THE START AND END TAGS
 * AS THE ELEMENT IS NOT SELF CLOSING BECAUSE IT HAS DATA TO CONTAIN.
 * 
 * IF _data IS NOT SENT IN THE ARRAY THE TAG WILL BE FORMED AS SELF CLOSING
 * BECAUSE IT HAS NO DATA TO CONTAIN
 */
/**
 * html()
 * 
 * @param mixed $elm
 * @param mixed $propBag
 * @return
 */
function html($elm,$propBag){
    $self_closing=false;
    $attributes="";
    $contained_data=""; //THE VALUE OF THE '_data' ARRAY ELEMENT IN $propBag
    if(array_key_exists("_data",$propBag)){ //IF _data EXISTS IN $propBag
            $contained_data = $propBag['_data']; //SAVE THE VALUE IN A VARIABLE
            unset($propBag['_data']); //REMOVE contained_data FROM THE ARRAY
            $self_closing=false; //indicate this is not a self closing tag because we have data to contain
        }else{ //IF contained_data IS NOT A KEY IN THE ARRAY
            $contained_data = NULL;//SET THE $contained_data VARIAB;E TO NULL
            $self_closing=true; //indicate it is a self-closing tag that contains no data
        }
    $start_tag = "<".$elm;
    foreach($propBag as $key => $value){
        $attributes .= " $key=\"$value\""; 
    }
    if(!$self_closing){
        $start_tag .= " ".$attributes.">";//CLOSE THE START_TAG AFTER SETTING ALL THE ATTRIBUTES FOR THE ELEMENT
        $end_tag = "</".$elm.">";  //BUILD THE CLOSING TAG
        $html = $start_tag.$contained_data.$end_tag;  //WRAP THE CONTAINED DATA IN THE START AND END TAGS
        
    }else{
        $start_tag .= " ".$attributes;
        $end_tag = '/>';
        $html = $start_tag.$end_tag;
    }
    return $html;
}

//EXAMPLES
 //FORM LEGEND
    echo html("legend",array(
        "_data"=>"Form Legend"
    ));
    //FORM TEXT INPUT AND LABEL 
    //may also be used for checkbox,radio,and textarea
    echo html("label",array(
        "for"=>"function_test",
        "_data"=>"html function test"
    
    ));
    echo html("input",array(
        "name"=>"function_test",
        "type"=>"text",
        "class"=>"input-xxlarge",
        "placeholder"=>"i guess it worked", //CUSTOM ATTRIBUTE
        "rel"=>"tooltip",
        "title"=>"this is my tooltip",
        "style"=>"border:10px solid red;",
        "onchange"=>"alert('boo hoo');"  //EXECUTE JS TRIGGERED BY EVENT
    ));
    //IMAGE TAG
    echo html("img",array("alt"=>"","src"=>"images/logo.png","height"=>"50"));
    //HYPER_LINK
    echo html("a",array(
        "id"=>"myanchor",
        "href"=>"http://www.google.com",
        "_data"=>"link text"
    ));
    //HYPERLINK WITH AN IMAGE AS CONTAINED DATA
   $images .= html("a",array(
    "class"=>"lightbox",
    "href"=>$filename,
    "_data"=> html("img",array(
        "src"=>$filename,
        "class"=>"thumbnail img-polaroid span2",
        "alt"=>""
    ))
));
    //META TAG 
    echo html("meta",array(
            'name' => 'Content-type',
            'content' => 'text/html; charset=utf-8',
            'type' => 'equiv'
    ));

Initial URL


Initial Description
/**
 * THIS FUNCTION WILL RENDER A CONTAINER OR SELF-CLOSING HTML ELEMENT.
 * IT AUTO DETECTS WHAT TYPE YOU WANT
 * BASED ON RATHER OR NOT YOU SET A _data KEY IN THE ARRAY OF
 * ATTRIBUTES PASSED TO THE FUNCTION
 * 
 * USING AN ASSOCIATIVE ARRAY ATTRIBUTES ARE ASSIGNED TO THE ELEMENT
* 
 * IF THE KEY _data IS SET IN THE $propBag ARRAY
 * _data WILL BE INSERTED BETWEEN THE START AND END TAGS
 * AS THE ELEMENT IS NOT SELF CLOSING BECAUSE IT HAS DATA TO CONTAIN.
 * 
 * IF _data IS NOT SENT IN THE ARRAY THE TAG WILL BE FORMED AS SELF CLOSING
 * BECAUSE IT HAS NO DATA TO CONTAIN
 */
SEE Examples Of Use Below The Code

Initial Title
HTML Helper Function Create Any Element With Any Number Of Attributes (self-closing and container tags)

Initial Tags
php, html

Initial Language
PHP