Posted on

CakePHPのtextareaの最初の改行コードがなくなる!

————–
\n
\n
テキストエリア内容
————–
のデータがあった場合

$form->input('Model.field', array('type' => 'textarea'));

で表示した場合、最初の改行コードがない状態でフォームに表示されます。
(下記のように2つある改行が1つになっています)


実際、バグではなくてブラウザの仕様で最初の改行は表示しない為です。


こんな風に改行とインデントつけながらhtml書いていた場合、初めの改行を読み込んで表示されると1段下がった状態で内容が表示されると困りますので・・・
CakePHPの場合 (cake/libs/view/helpers/html.php)

''

のように改行を入れてから内容を表示していないので、内容を展開する前に改行を挿入してから展開する必要があります。
そこで、 (cake/libs/view/helpers/form.php)

return $this->output(sprintf(
$this->Html->tags['textarea'],
$options['name'],
$this->_parseAttributes($options, array('type', 'name'), null, ' '),
PHP_EOL. $value
));

の$valueの前に改行コード「PHP_EOL」を足しました。
バージョンは1.2.6です。