2013年1月10日木曜日

sessionをcookieからDBに変更

前の投稿と同じ手順でoil generateを行い、
項目を大幅に増やしたら怒られました。

 Fatal error: Uncaught exception 'Fuel\Core\FuelException' with message 'The session data stored by the application in the cookie exceeds 4Kb. Select a different session storage driver.' in C:\Users\ユーザー名\works\fuel_practice\fuel\core\classes\session\driver.php on line 464

4KBを超えたらダメみたいです。
sessionをcookieじゃなくてDBに保存する方法があるようなのでテスト。
いちいち躓いてますね。

参考にさせてもらったのは
S4Uさんのlこちらのページ

手順はわずか2Step


  1. session用のconfigを書き換える
    1. fuel>core>config>session.phpをコピーしてfuel>app>config>以下に貼り付け
    2. 33行目付近の'driver' => 'cookie'を 'driver' => 'db'に書き換え
  2. oil r sessionでテーブルを作成する
    1. oil r session:create


動作確認して完了。
スゲー。

2013年1月9日水曜日

oilでコード生成して様子を見る

どうもModelがらみの理解が出来ていないようなので、
サンプルを見てみることにしました。

サンプルはoilでジェネレートしたModelをのぞいてみることにする。


環境

  • Windows7 homepremium
  • xampp1.7.7
  • fuelphp1.4


oilはコマンドプロンプトcmd.exeから使用します。

管理者権限でcmd.exeを起動します。

起動後にoilまでのパスを通す。

phpまでのパス
c:\直下にxamppをインストールしている人ならパスは
c:\xampp\php になっていると思います。


C:\Users\ユーザー名>cd c:\xampp\php

C:\xampp\php>set path=%path%:%cd%


続けて、oilまでのパスを通します。
自分の環境ではWindowsのUsersフォルダに設けたworksのなかにfuel_practiceというフォルダがあるのでパスは以下のようになります。
c:\Users\ユーザー名\works\fuel_practice
コマンドプロンプトでパスを通す。

C:\xampp\php>cd c:\Users\ユーザー名\works\fuel_practice
C:\Users\ユーザー名\works\fuel_practice>set path=%path%:%cd%

これで準備完了。
それでは、さっそくoilでgenerateしてみよう。

ちなみに、やっていることのほとんどは
WinRoad徒然草さんのサイトに詳しく載っています。ほんとお世話になってます。

さてoilに関してのドキュメントにざっと目を通して。。。
http://fuelphp.jp/docs/1.4/packages/oil/generate.html
。。。うう、このへんから辛いですね。
生成されたModelを覗いてみたいということで、
Using Model_CRUD か Scaffolding ですよね??^^;
とりあえず全体を把握してみてみたいと思うので今回はScaffoldingでいってみよう。


C:\Users\ユーザー名\works\fuel_practice>php oil generate

で説明文。
Examples:には
php oil generate controller <controllername> [<action1> |<action2> |..]
php oil g model <modelname> [<fieldname1>:<type1> |<fieldname2>:<type2> |...]
php oil migration <migrationname> [<fieldname1>:<type1> |<fieldname2>:<type2>|...]
php oil g scaffold <modelname> [<fieldname1>:<type1> |<fieldname2>:<type2> |...]
php oil g scaffold/tmplate_subfolder <modelname> [<fieldname1>:<type1> |<fieldname2>:<type2> |...]
php oil g config <filename> [<key1>:<value1> |<key2>:<value2> |...]
と表示されました。


構文は
php oil g scaffold アプリケーションの名前 項目1:データタイプ 項目2:データタイプ ...
となっているようですね。
自分はwindows + コマンドプロンプトからなので先ほどパスを通したphpから実行するため
頭にphpをつけてます。

項目1,項目2がxampp上のMySQLテーブルのカラム名を兼ねていて、きっちり決めておけば後で手を入れるのを大幅に減らすことが出来そう。
ここでは、ドキュメントのサンプルのように2項目で作成してみます。

コマンドプロンプトからえいやっと。

C:\Users\ユーザー名\works\fuel_practice>php oil g scaffold sample3 title:string content:text

ばばばっと一気にファイルが作成されます。うーむ気持ちいい。
Creating migration: C:\Users\ユーザー名\works\fuel_practice\fuel\app\migrations/001_create_sample3s.php

Creating model: C:\Users\ユーザー名\works\fuel_practice\fuel\app\classes/model/sample3.php
Creating controller: C:\Users\ユーザー名\works\fuel_practice\fuel\app\classes/controller/sample3.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/sample3/index.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/sample3/view.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/sample3/create.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/sample3/edit.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/sample3/_form.php
Creating view: C:\Users\ユーザー名\works\fuel_practice\fuel\app\views/template.php

もう一息。続けて

C:\Users\ユーザー名\works\fuel_practice>php oil refine migrate

これでテーブルが作成されたはず。 phpmyadminなどで確認してみましょ。 うむ。たしかに表示されてます。 さっそくアクセスすると。。。 普通に使えてます。すげ。 ちょっと長くなったので今回はここまで。 作成されたModelを読み解くのを次回にしようと思います。お疲れ様でした。

2013年1月4日金曜日

あけましておめでとうございます。

結局、成果物のないまま2013年を迎えることとなってしまいました。
今年こそ早めに成果物をだしたいと思います。

新年を迎えてgitを取り入れることにしました。
でも、まだ恥ずかしいのと作法がよくわからないので
bitbucketにプライベートリポジトリを作成してます。
それと、xamppとfuelPHP両方バージョンアップしてみましたよ。
データベース接続に少し手間取りましたが、どうにか1.4への移行も完了。
xamppは最新版の1.8.1にしたかったのですが、
どうしてもうまくいかなくて暫定的に1.7.7です。もともと1.7.2だったのであまり変わってません。。。

こんなに感覚的な理解で良いのか?という感じで進めていますが大丈夫でしょうか(^^;)

ユーザ認証の記事に検索で飛んできている人が多いので、
このあたりを自分の経験として投稿していく予定です。
未熟者が躓くポイントを生暖かく見守ってくれるとうれしいです。