以下、FuelPHP 1.3で確認しています。
囲い文字という表現が正しいかはさて置き、FuelPHPのFormatクラスは、
CSVの各値がダブルクォートで囲まれている事を前提にしています。
参考:
FuelPHP の Format クラスは CSV が「"」で囲まれることを前提にしている
ソースを見てみると、以下のConfig値が有りました。
* format.csv.newline
* format.csv.delimiter
* format.csv.enclosure
* format.csv.escape
* format.csv.regex_newline
囲い文字のダブルクォートはformat.csv.enclosureになります。
アプリ側で
Config::set('format.csv.enclosure', '')
しても、反応はありませんでした。
理由は、Format::_init()でConfig::load('format', true)している部分です。
アプリ側でsetした値が飛んでしまいます。
app/configディレクトリにformat.phpを置いても良いのですが、
どうも気が進まなかったので、以下の方法で半ば強引にねじ伏せてみました。
(1)
アプリ側でConfig::load('format', true)する。
(2)
アプリ側でConfig::set('format.csv.enclosure', '')する。
(3)
普通にFormatクラスを使う。
ex). $data = Format::forge($data, 'csv')->to_array();
これでOKです。
ポイントは
Config::load($file, $group = null, $reload = false, $overwrite = false)
の$overwriteはfalseがデフォルトである部分です。
アプリ側で先にConfig::load('format', true)して
Format::_init()でのConfig::load('format', true)を無効化する感じです。
--
2012/10/06 追記
$overwriteじゃなくて$reloadかも。
--
2012/10/06 追記
$overwriteじゃなくて$reloadかも。
No comments:
Post a Comment