ソノウチイエオカウ

タイトルと無関係な個人用の技術メモ

FuelPHP ◇ oil generate admin を一度実行した後、もう一度実行するとエラーになる

oil generate adminは、1回目ならオプション無しでエラーとなりませんが、2回目以降エラーとなってしまう。

理由はbase.php等の共通で使うファイルが1回目で作成され、2回目実行時に重複してしまう為。

対応は、2回目以降の実行時はオプションに-f:上書き、もしくは-s:スキップを指定する。

FuelPHP ◇ getパラメータに対してValidationを行う

入力チェック等のValidationは、POSTパラメータに対してしか行われない

$val = Validation::forge();
if ($val->run())

 

GETパラメータで渡ってきた値に対してValidationを行うには

$val = Validation::forge();
if ($val->run(array('hoge' => Input::get('hoge'))))

 

のようにして、runメソッドのパラメータで 、チェックしたい値を渡す

FuelPHP ◇ oil generateで自動生成した画面でエラー時のメッセージが赤枠表示にならない

FuelPHP1.7.1の段階で、oil generateで自動生成した画面でエラーメッセージが赤枠表示にならない。

理由はTwitter bootstrap 3からcssのalert-error定義が削除になった為。

対応は自動生成した後は、/app/views/template.php(もしくは/app/views/admin/template.php)のalert-errorをalert-dangerに変更する。

自動生成前なら/packages/oil/views/scaffolding/template.php(もしくは/packages/oil/views/admin/template.php)のalert-errorをalert-dangerに変更する。

 

但し、FuelPHP1.8-devには修正が取り込まれているので、次期リリース時はなおっているはず。

FuelPHP ◇ 独自の設定ファイルを利用する

設定ファイルを作成

php oil g config sample test:test1

⇒/app/config/sample.php の設定ファイルが出来る(直接ファイルを作ってもよい)

 

設定ファイルを読み込み

常に読み込む

  • 通常

         1. 設定 ⇒ config.phpのalways_loadのconfigを設定

'config'  => array('sample'),

          2.使用する箇所

$val = Config::get('sample.test');  // test1が取得される

  • グループ無しを設定の場合

'config'  => array('sample' => null),  //config.phpの設定とマージされる

$val = Config::get('test');  // test1が取得される

  • グループ名を設定した場合

'config'  => array('sample' => 'group1'),

$val = Config::get('group1.test');  // test1が取得される

 

使用するときのみ読み込む

  • 通常

Config::load('sample', true);  //config.phpの設定とマージされる

$val = Config::get('sample.test');  // test1が取得される

  • グループ無しを設定の場合

Config::load('sample');

$val = Config::get('test');  // test1が取得される

  • グループ名を設定した場合

Config::load('sample', 'group1');

$val = Config::get('group1.test');  // test1が取得される

Bootstrap 3 ◇ form項目の横幅を指定する

formの項目にはform-controlを指定するが、これを指定すると横幅の指定が効きかない(width:100%になるため)

なので、横幅を指定したい場合は、上位のタグで指定する

 

<div class="col-md-6">

  <input class="form-control" name="word" type="text" id="word" />

</div

 

FuelPHP ◇ ファイルアップロード処理を実装する

設定ファイルを配置

/fuel/core/config/upload.phpを/fuel/app/config/にコピーする

⇒アップロードで共通の設定事項があればここで設定しておく

※設定できる内容は本家のマニュアルを参照(1.7)

 

アップロードエラーの日本語ファイルを配置

/fuel/core/lang/en/upload.phpを/fuel/app/lang/jaにコピーする

⇒日本語になおす

※FuelPHP ◇ 【設定】言語設定をするをやっておく


 

php.iniを修正

extension=php_fileinfo.dllを有効化

 その他php.iniの設定はこちらのサイトとかを参照 ⇒ PHPまとめ アップロード

 

Controllerを作成

// 設定(設定ファイルで設定しなかった個別の設定をセット)
$config = array(
    'path' => 'files',
);

// アップロード実行
Upload::process($config);

// エラーを検証
if (Upload::is_valid())
{
    // アップロードファイルを保存
    Upload::save();
}

// エラーの場合は、下記にエラー情報が入っている
// Upload::get_errors()

// 正常処理の場合は、下記にファイル情報が入っている
// Upload::get_files()

 

viewを作成

<?php echo Form::open(array('name'=>'upload','enctype'=>'multipart/form-data','method'=>'post')); ?>
<?php echo Form::hidden('MAX_FILE_SIZE', '1500', array('id' => 'file_size')); ?>
<?php echo Form::file('upload',array('class'=>'col-md-4')); ?>
<?php echo Form::submit('submit', '保存', array('class' => 'btn btn-primary')); ?>
<?php echo Form::close(); ?>

 

こまったメモ ◇ MACにBootCampで入れたwin7からUSB3.0が認識しない

MACにBootCampで入れているwin7(64bit)でUSBメモリが認識しなかった。

他のUSB機器は大丈夫だったので、おかしいなーと思って調べたらUSB3.0がダメらしい。

BootCampは4.0

 

ドライバの入れなおし(デバイスマネージャーからUSB3.0を削除して、再起動)でなおりました。