5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

CakaPHPのHTMLヘルパーからの出力が汚いと言われたので無理矢理修正した話し


お客さんから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ヘルパーを使えます。

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

著:山田祥寛
¥3,366 (2024/11/21 16:43時点 | Amazon調べ)
著:松浦 健一郎, 著:司 ゆき
¥2,574 (2024/11/21 16:43時点 | Amazon調べ)
著:谷藤賢一, 著:徳丸浩
¥2,750 (2024/11/21 16:43時点 | Amazon調べ)

“CakaPHPのHTMLヘルパーからの出力が汚いと言われたので無理矢理修正した話し” への2件のフィードバック

  1. uのアバター
    u

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

    1. andoのアバター

      名無しさんへ

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

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