より良さそうな対策を思いついたので、以下に書きました。
FuelPHPのScaffold(admin)と、バリデーションエラーメッセージのエスケープ問題の対応策。最善(?)策。
http://madroom-project.blogspot.jp/2012/06/fuelphpscaffoldadmin_08.html
--
昨日の、以下のエントリについてです。
FuelPHPのScaffoldと、バリデーションエラーメッセージのエスケープに関して。
http://madroom-project.blogspot.jp/2012/06/fuelphpscaffold.html
まず、oil g scaffold ... の場合、この問題は発生しません。
(とはいっても、cssのスタイルが正しく適用されないはずです。)
oil g admin ... の場合に、この問題は発生します。
エラーメッセージがエスケープされずに、なおかつcssのスタイルを正しく適用させるために
とりあえず、以下の修正をしてみました。
* fuel/packages/oil/views/admin/template.php
ちなみに/fuel/packages/oil/views/scaffolding/template.phpはもともと以下の形で、
e()を通していません。
<?php if (Session::get_flash('success')): ?> <div class="alert-message success"> <p> - <?php echo implode('</p><p>', e((array) Session::get_flash('success'))); ?> + <?php echo implode('</p><p>', (array) Session::get_flash('success')); ?> </p> </div> <?php endif; ?> <?php if (Session::get_flash('error')): ?> <div class="alert-message error"> <p> - <?php echo implode('</p><p>', e((array) Session::get_flash('error'))); ?> + <?php echo implode('</p><p>', (array) Session::get_flash('error')); ?> </p> </div> <?php endif; ?>
* fuel/core/classes/validation.php
public function show_errors($options = array()) { $default = array( - 'open_list' => \Config::get('validation.open_list', '<ul>'), - 'close_list' => \Config::get('validation.close_list', '</ul>'), - 'open_error' => \Config::get('validation.open_error', '<li>'), - 'close_error' => \Config::get('validation.close_error', '</li>'), + 'open_list' => \Config::get('validation.open_list', ''), + 'close_list' => \Config::get('validation.close_list', ''), + 'open_error' => \Config::get('validation.open_error', '* '), + 'close_error' => \Config::get('validation.close_error', '<br />'), 'no_errors' => \Config::get('validation.no_errors', '') ); $options = array_merge($default, $options);とりあえずこの形で、普通に表示されました。
後は、ベストな形の模索。。。
fuel/core/classes/validation.phpの方はコンフィグファイルで対応する方が良いのかな。
とりあえずミニマムと思われる内容で。
No comments:
Post a Comment