public/assetsに新しいディレクトリを作成してAsset::get_file()で読み込みたい

1,464 views
Skip to first unread message

洋田中

unread,
Aug 9, 2012, 12:18:20 AM8/9/12
to fuelp...@googlegroups.com
はじめまして
田中と申します。
FuelPHP v1.2.1のことで質問させてください。

public/assetsにcsvディレクトリを新規作成してAsset::get_file('ファイル名', 'csv')のようにしてパスを取得したいと考えております。
サイト内で共通して使いたいのでコンフィグファイルで設定を行おうと思い、以下の手順を行ったのですが、パスを取得できませんでした。


[手順]

1. public/assets/にcsvディレクトリを作成し、csvディレクトリ内にtest.csvを作成する。
2. core/config/asset.phpを、app/config/asset.phpにコピーする。
3. app/config/asset.phpをテキストエディタで開いてfoldersの部分を以下のように変更。
'folders' => array(
'css' => array(),
'js'  => array(),
'img' => array(),
'csv' => array('assets/csv'), // ここを追加
),
4. ビューの中から<?php echo Asset::get_file('test.csv', 'csv') ?>を呼び出すと以下の警告・エラーが表示されました。
---------------------------------------------------------------------
Warning!

ErrorException [ Warning ]: array_unshift() expects parameter 1 to be array, null given

COREPATH/classes/asset/instance.php @ line 135:

134: {
135: array_unshift($this->_asset_paths[$type], str_replace('..'.DS, '', rtrim($path, DS)).DS);
136: }
Warning!

ErrorException [ Warning ]: Invalid argument supplied for foreach()

COREPATH/classes/asset/instance.php @ line 397:

396: {
397: foreach ($this->_asset_paths[$type] as $path)
398: {
---------------------------------------------------------------------


標準で用意されているcss,img,jsディレクトリのファイルは問題なく読み込めているので、
csvディレクトリに対しての設定が正しく行われていないとも思うのですがお手上げです。
どうかお知恵を拝借させてください。

Fumito Mizuno

unread,
Aug 9, 2012, 5:10:16 AM8/9/12
to fuelp...@googlegroups.com
水野です。


田中さんの手順を試してみましたが、同じ結果になりました。

で、app/config/asset.php の
'folders' => array(
'css' => array(),
'js' => array(),
'img' => array(),
),
ですが、ここは(Asset::img 等で引っ張ってくる)フォルダ位置の変更に使うようです。
例えば、
'folders' => array(
'css' => array(),
'js' => array(),
'img' => array(’assets/images/’),
),
のように。

田中さんがやりたいであろうと思われる、「css で assets/css フォルダを探す」は、
コアファイルの core/asset/instance.php を変更すればなんとかなるようです。

protected $_asset_paths = array(
'css' => array(),
'csv' => array(),
'js' => array(),
'img' => array(),
);

/**
* @var array the sub-folders to be searched
*/
protected $_path_folders = array(
'css' => 'css/',
'csv' => 'csv/',
'js' => 'js/',
'img' => 'img/',
);

コアを書き換えないで実現する方法があるかどうかは分かりません。


--
Fumito MIZUNO
Standing on the Shoulder of Linus
http://ounziw.com/

洋田中

unread,
Aug 9, 2012, 8:49:35 AM8/9/12
to fuelp...@googlegroups.com
水野さんこんばんは、田中です。
ご助言を頂き、ありがとうございます。

asset.phpから自由に登録できるものと勝手に思い込んでいました。
教えていただきましたコアの修正を行ったらうまくいきました。
コアの修正で副作用が出たときに私のスキルでは対応できないと思うので、以下のような方法も合わせて検討してみます。

Asset::add_path('asserts/csv/', 'js');
Asset::get_file('test.csv', 'js');


Kenji Suzuki

unread,
Aug 20, 2012, 5:08:21 AM8/20/12
to fuelp...@googlegroups.com
Kenji です。
https://github.com/fuel/core/issues/1109

に似たような要望があがってますね。


--
// Kenji

『はじめてのフレームワークとしての FuelPHP』プレゼントキャンペーン実施中
http://fuelphp1st.com/present
Reply all
Reply to author
Forward
0 new messages