一昔前は、HTMLのボタンなどのパーツを修飾したい場合は画像を使うことが多かったですが、最近の流行りはすべてCSSであらわすのが主流かと思います。
ということで、ボタンをCSSで修飾してみたのですが…
CakePHP2.10 でのお話。
たとえば、HtmlヘルパーのLinkでは
<?= $this->Html->link('<i class="fa fa-search"></i> 検索',"#",['escape'=>false]);?>
こんな感じで、第3引数のパラメータにescape=falseを追加すればよいです。
意図通り出力されました。
<a href="#"><i class="fa fa-search"></i> 検索</a>
じゃ、Form->submit()でも同じかなとおもって同じようにやってみると…
<?= $this->Form->submit('<i class="fa fa-search"></i> 検索',['escape'=>true,'div'=>false,'class'=>'btn btn-default ']);?>
<input class="btn btn-default" type="submit" value="<i class="fa fa-search"></i>&nbsp;検索">
なんでvalueにはいるねん!というか、buttonタグじゃなくてinputタグなんだ…。
公式サイトにescapeオプションへの言及がなかったのですが、やってみるとHTML エンティティへの変換の有無のようです。value属性の中身にそのまま突っ込むのはやばいですのでだめですね。
なお、FormヘルパーのButtonメソッドで出してもinputタグで出力されますので、同じことでした。
ということで、Formヘルパーから出すのは無理っぽいです。
単なるリンクであれば、Html->linkメソッドでボタンっぽく見せてあげればいいんですけどね。
aタグでもPostできるようにJavaScriptを書いてあげればできなくはないのですが、なんかちょっとそこまでしなくてもとは思います。
Tagメソッドで組み立ててもいいけど・・・まぁ無駄この上ないので、素直にHTMLをべた書きするのが良いかと思います。
セキュリティーコンポーネントにも影響はなさそう。