inmori
1
【環境情報】
・baserCMSのバージョン:全バージョン
・レンタルサーバー名:
・使用テーマ:オリジナル
・PHPスキル(自己評価):B
正直textrareaの仕様なので仕方ないと思うのですが、お客様から指摘を受けたので相談します。
サイト基本説明文やメールフォームフィールドの注意書き等、バナーのalt等のtextarea項目について、
「
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX」
みたいな感じに先頭に改行を入れて保存した場合、データ上では改行込で保存されているにも関わらず、
次に編集画面で見ると
「XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX」のように
先頭改行が削除されてしまいます。
これはbaserCMSや実装の問題ではなくtextareaの仕様で
<textarea><?= $value ?></textarea>
のようなHTMLだと、$valueの最初と最後に改行があった場合に削除されてしまう
というところまでわかったのですが、
参考:textareaで、先頭の改行が消えてしまう。 水曜以外もどうでしょう
どう対応すればデータと入力画面での不整合が解消しますでしょうか?
仕様だと説明したのですがお客様的には直してほしいようで・・・。
正直現状では、
baserコア含む全てのtextarea項目を、
<textarea>
<?= $value ?>
</textarea>
のようにナマのtextareaタグに書き直すしか方法がないように思います。
なにかアイデアありますか?
また、上記の策を使うと、コードの自動フォーマット等で<?= $value ?>
前にタブ等のインデントが入った場合に、テキストエリア内にも
「 XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX」
といった感じでインデントが入ってしまうという、
別の問題も発生してしまいます。
サイト基本説明文やメールフォームフィールドの注意書き等、バナーのalt等のtextarea項目
いずれも最初に改行が必要な項目ではないと思います。
- サイト基本説明文 : 主な使用箇所のmeta description 等で先頭に改行があると、検索結果の説明文に正しく表示されない可能性があります。
- メールフィールドの注意書き:(組み込み側で調整可能な内容。先頭に
<br>
タグなどを入れれば、隙間が取れます)
- バナーのalt: 属性値なので、むしろ改行を消したほうが良いのではないかと思います。
どうしても入れたいときは、改行コードや記号などを入れて、
・CSSで調整
・phpの str_replace 等で文字列置換
などの対応が良いのではないかと思います。
inmori
3
いずれも最初に改行が必要な項目ではないと思います。
提示している3項目についてはあくまで例で、すべてのtextarea項目で起こっています。
また、改行が必要か不要かという問題というよりは、
入力してDB保存後、一覧や表示項目等で表示されている内容と、編集画面でテキストエリアに表示されている内容に不整合があることに関して問題視されているようです。
「入力した通りに保存されているにも関わらず、どうして再度開いたら中身が変わってるの?」みたいな感じです。
それで困っているというより、「この動きはおかしくない?」という指摘です。
・CSSで調整
・phpの str_replace 等で文字列置換
なんとなく「臭いものに蓋をする」みたいな感じであまり良くなさそうです。
CSSで調整については、今回影響を受けているのは見た目ではなく入力内容なので・・・
現在考えている対応としては、
1)オリジナルのHelper作成してtextareaタグ出力→すべてのtextarea部分を置き換える必要あり
2)CakePHPコアのHtmlHelper::$_tagsのテンプレートをどこかでオーバーライド
2)が良いかなと思っているのですが、BaserやCakeのアップデートにも対応できるようにしようとするとちょっと行き詰まってしまい、方法についてお知恵いただけますでしょうか?
また、今回指摘があったのはbaserCMS4ですが、近々移行予定のbaserCMS5でも同様の事象があり、同じ問題が発生しそうです。
図々しいですが、コアの方で対応があるとありがたいです。
masui
4
横から失礼いたします。
本件について、baserCMS5系ではinmoriさんの意見が取り込まれて早速改修対応されたようです。
4系については開発の優先度が下げられていると思うので、改修対応があるかどうかを待たれつつ、早めに必要であればissueを送ってみるのはいかがでしょうか。
「いいね!」 1
inmori
5
ありがとうございます!
5系で直っていることを確認できました。
4系対応に関しては、いったんCakeコアを書き換えて対応します。
「いいね!」 1