PHP 備忘録 | メシのタネ

このエントリーをはてなブックマークに追加

FuelphpのFieldsetとかmodelとか微妙にややこしいやつ

 2014/03/10

ドキュメントとかでは、
フォローできないややこしい部分で
自分が抜け出せない地獄にハマった部分を、
ドキュメントやフォーラムや優秀なブロガーさんからの
情報を基にしてとても雑にまとめました。

$_POSTの取得

Input::post();

GETなら

Input::get();

SESSION

session::set("name",$value);
session::get("name");

model

モデルにルーチン処理

モデルにメソッド書いて
モデルをnewしてメソッドにアクセスすれば
コントローラの行数を減らす事ができて保守がし易い

save

$insert = array(
     'key' => 'val',
     'key1' => 'val1',
     'key2' => 'val2'
);

$obj = new Model_Basic($insert);
$obj->save();

クラスの呼び方は他にもあります。

query

$search = new Model_Analyvalue;
$cnt = $search->query()->where('userID',$userID)->count();

クラスの呼び方は他にもあります。

てかここ見るのがよろし

http://fuelphp.jp/docs/1.7/packages/orm/crud.html

配列で欲しい
(オブジェクトが複数返ってくる場合)

$obj = $search->query()->where('userID',$userID)->get();
foreach($obj as $i =>$val)
{
     $obj[$i] = $val->to_array();
}

これフォーラムで見たんだけど、もっと良い方法がありそう・・・。

crudのドキュメント見ると大体分かります。
ただ、プロパティーの所が良くわかんないので、悔しいです。

クエリビルダ

ここに大体書いてある

http://btt.hatenablog.com/entry/2012/08/20/190737

Fieldset

modelにもフォームの設定を書ける

クラスを呼んでモデルを紐付ける

Fieldset::forge('userinput')->add_model("Model_account");

text
          'menu1' => array(
                         'label' => '練習メニュー1',
                         'form' => array(
                                             'id' => 'menu1',
                                             'type' => 'text',
                                             'class' => 'span3',
                                             'add_rule'
                                             ),
                         ),

select 
          'menu1' => array(
                         'label' => '練習メニュー1',
                         'form' => array(
                                             'id' => 'menu1',
                                             'type' => 'select',
                                             'options' => array(1,2,3,4,5)
                                             'class' => 'span3',
                                             'add_rule'
                                             ),
                         ),

textarea 
 'menu1' => array(
               'datatype' => 'text',
               'label' => '自己紹介',
               'form' => array(
                         'type' => 'textarea',
                         'class' => 'span5',
                         'rows' => '8',
                    ),
 ),

割とこの辺はどこでも紹介してるので割合
checkboxとradioはselectとほぼおんなじ。
ただ、項目が全部改行されて出るのでむかつきます。
検索しても検索しても答えが出ないので、core見てみました。

/var/www/root/fuel/fuel/core/classes/field.phpのFieldset_Fieldクラスの
templateメソッドの中の589行目付近のpreg_match関数の
パラメータの変数matchに対して出力されたmatch配列回して
strip_tagsすればチェックボックスなどのbrが消えるっぽいです。

あんましよくないですよね。

fieldsetのfieldの削除、追加、バリデーションルール変更


フォームの追加
$obj->add('name','label',array(attr => 'hoge', attr2 => 'moge'))
フォーム削除
$obj->disable('menu1')
フォームのバリデーションを無効
$obj->field('menu1')->delete_rule('rule')
フォームのバリデーション追加
$obj->add_rule('rule')

バリデーションルールはここに書いてあります。
これ以外にもあるんですかね。

http://fuelphp.jp/docs/1.7/classes/validation/validation.html

検索結果を表示したいときはmodelが一緒だったらコレで出せます。

$usermeta = DB::select('*')->from('acsegments')->where('UserID','=',$user[0]['id'])->as_assoc()->execute();    
$form->populate($usermeta[0]);

DB検索かけて検索かかった値をpopulateすればいいです。
$formにはfieldsetのオブジェクトが入ってないとダメだと思います。

optionsの項目が多い場合

回して
          $sendopt = array();
          $sendopt[0] = "選択してください。";
          foreach($menu as $id => $field)
          {
               $sendopt[$field["menuID"]] = $field["menuvalue"];
          }
オプションセット
          $form->field("menu1")->set_options($num);

Tokenの作成

app/config.php
113行目辺りのセキュリティセッティングを設定
自分のはコメントアウトされていたから最初無効になってるかも

/**
* Security settings
*/
'security' => array(
 'csrf_autoload'    => false,
 'csrf_token_key'   => 'fuel_csrf_token',
 'csrf_expiration'  => 0,

 'token_salt'            => '5fdas4gahH56L17fTffg',

この項目を設定

呼び出しはコレ

Config::get('security.csrf_token_key'); こいつはname
\Security::fetch_token();     こいつはsalt

トークンのチェック
Security::check_token()

テンプレートの変え方

出力テンプレ変えたい場合
contorollerのアクションメソッドの前で

public $template = 'template';

public function action_hoge()
{


}

参考サイト

ここの内容理解したら本要らないんじゃないかってくらい
素敵な内容です。

http://fuelphp.jp/

http://piyopiyocs.blog115.fc2.com/blog-category-36.html

http://blog.fagai.net/category/php/fuelphp/

http://w.builwing.info/category/fuelphp/

http://teru2-bo2.blogspot.jp/2012/07/fuelphp_19.html

http://d.hatena.ne.jp/Kenji_s/20120130/1327911897

PHPのクラスからやりたい人はこっち


このエントリーをはてなブックマークに追加

コメント

"FuelphpのFieldsetとかmodelとか微妙にややこしいやつ"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ