#CakaPHP のHTMLヘルパーからの出力を無理矢理修正する。

お客さんからCakePHPから出力するHTMLコードが汚いと言われました。特に<head>の中の<meta>がつながって読みにくいと言われてしまいました。別に人間が読まないからいいじゃないと思いますが、ここはお金をいただく身ですので、こころよく修正してしまいます。

HTMLヘルパーは出力するときにHtmlHelper.phpでsprintf()で整形して追加しているだけのようですので、とりあえず簡単にsprintf()の書式に\nを追加してしまいます。

CakePHP自身を修正したくないので、MyHtmlヘルパーを作ってHtmlヘルパーから継承させてしまいます。

[code]

<?
App::uses(‘HtmlHelper’, ‘View/Helper’);
class MyHtmlHelper extends HtmlHelper {
public function __construct(View $View, $settings = array()) {
parent::__construct($View, $settings);
// HTMLヘルパーで整形して出力するコードの行末に改行を入れて、きれいなHTMLコードを出力する。
foreach($this->_tags as $key => $value) {
$this->_tags[$key] = $value . “\n”;
}
}
}

[/code]

使うときには、コントローラーのヘルパーの設定で、

[code]
public $helpers = array( ‘Html’ => array(
‘className’ => ‘MyHtml’
)
);
[/code]

のようにしておきます。これでHTMLヘルパーを使っているViewを修正せずに、MyHtmlヘルパーを使えます。今回はメソッドの追加変更はありませんので、そのままHTMLヘルパーを使えます。

あまり役に立たないコードです・・・。

投稿者:

avatar

ando

50過ぎてもプログラマーの気持ちを忘れない。

「#CakaPHP のHTMLヘルパーからの出力を無理矢理修正する。」への2件のフィードバック

  1. // views/layouts/default.ctp
    下記のように meta コードを埋め込んだあとに、
    ・行の右端に半角空白をつけ加えるか
    ・metaコードの下に改行を1つ加える
    と、次の行とつながらなくなりますが、それではだめなのでしょうか?
    Html->meta(array(‘name’=>’robots’,’content’=>’noindex,nofollow’)); ?>

    1. 名無しさんへ

      # このメールアドレスを承認したら、スパムコメントの認証の意味はないわな・・・。

      View内でトリッキーな書き方をしたくないので、ヘルパーを追加しました。

コメントは停止中です。