お客さんからCakePHPから出力するHTMLコードが汚いと言われました。特に<head>の中の<meta>がつながって読みにくいと言われてしまいました。別に人間が読まないからいいじゃないと思いますが、ここはお金をいただく身ですので、こころよく修正してしまいます。
HTMLヘルパーは出力するときにHtmlHelper.phpでsprintf()で整形して追加しているだけのようですので、とりあえず簡単にsprintf()の書式に\nを追加してしまいます。
CakePHP自身を修正したくないので、MyHtmlヘルパーを作ってHtmlヘルパーから継承させてしまいます。
<?php
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”;
}
}
}
使うときには、コントローラーのヘルパーの設定で、
public $helpers = array( ‘Html’ => array(
'className' => ‘MyHtml’
)
);
のようにしておきます。これでHTMLヘルパーを使っているViewを修正せずに、MyHtmlヘルパーを使えます。今回はメソッドの追加変更はありませんので、そのままHTMLヘルパーを使えます。
あまり役に立たないコードです・・・。
“CakaPHPのHTMLヘルパーからの出力が汚いと言われたので無理矢理修正した話し” への2件のフィードバック
// views/layouts/default.ctp
下記のように meta コードを埋め込んだあとに、
・行の右端に半角空白をつけ加えるか
・metaコードの下に改行を1つ加える
と、次の行とつながらなくなりますが、それではだめなのでしょうか?
Html->meta(array(‘name’=>’robots’,’content’=>’noindex,nofollow’)); ?>
名無しさんへ
# このメールアドレスを承認したら、スパムコメントの認証の意味はないわな・・・。
View内でトリッキーな書き方をしたくないので、ヘルパーを追加しました。