Search code examples
phptwitter-bootstrapyii

How to make a button with an html tag inside the label


I'm trying to use some bootstrap features like the Icon glyphs in the Yii CHtml class, here is my code:

<?php 
   echo CHtml::submitButton('<i class="icon-user"></i> Login', 
       array(
           'class' => 'btn btn-large pull-right'
       )); 
 ?>

But it kind of doesn't "recognize" the <i> tag and just renders the tag out like the image below:

enter image description here

does anyone knows how to workaround it (without typing the HTML tags itself).


Solution

  • CHtml::submitButton produces an <input type="submit"> that cannot accept additional HTML as its content. However, you can do things to taste with CHtml::tag:

    echo CHtml::tag('button',
                    array('class' => 'btn btn-large pull-right'),
                    '<i class="icon-user"></i> Login');
    

    This will produce a <button> tag that can take arbitrary HTML as its content.

    Update: As frostyterrier points out in the comments, there's a built-in method CHtml::htmlButton that allows you to do this even more easily:

    echo CHtml::htmlButton('<i class="icon-user"></i> Login',
                           array('class' => 'btn btn-large pull-right'));