より良さそうな対策を思いついたので、以下に書きました。
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