--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

11

22

コメント

うっかりさんにformヘルパーが残酷な仕打ち。

CakePHPのformヘルパーの話し。

DBにbirth_year、birth_month、birth_dayとカラムを作って、
$form->dateTimeを使おうとしたら、
出力された名前が[テーブル名][year]、[テーブル名][month]、[テーブル名][day]になる。
yearをbirth_yearに変更はできないみたい。

ちょっと考えて、
$form->yearとかを使うと、
出力された名前が[テーブル名][birth_year][year]になっちゃう。。。
やっぱり変更できないみたい。


いろいろ探してみて、この記事を読んでみた。
http://old.nabble.com/$form-%3Eyear-not-saving-td21134592.html

どうやら単純に諦めろっていう話しみたいでした。
なので、記事に記載のあるとおりに実装。

ヘルパーは便利だけど、
応用できないと使うタイミングが難しいよね。
スポンサーサイト

11

22

コメント

Active Desktopの修復ができない

最近PCの調子がなにやらおかしい。
(記事2度目)

仕事で使ってるdynabook SS SX/3211LNKWの
無線LANスイッチを押すと、数秒後に青い画面が!!

いろいろ作業中にネット接続できないとか死活問題だわーとか思ってたんだけど、
無線LAN使わなければ行ける!ということで、
5mのLANケーブルを部屋の隅からニョキっと引いてきて無事解決。

かと思いきや、
いくら再起動しても「Active Desktopの修復」という画面が
デスクトップに出続けている。
今日で4日目。

Active Desctopの修復するボタンを押しても
なんかスクリプトエラーが出る。

なんとかならないか。
でも実害が無さそうだったので、放置。

今日この記事を見つけて早速トライ。

OSのユーザープロファイル再作成で無理やり直したトラブル。今ぐぐってやっとわかった! くやしいよー。症状: Windows XPマシンで、再起動しても再起動してもアクティブデスクトップの修復が解除できない。アクティブデスクトップの修復のボタンを押すと、このページのスクリプトでエラーが発生しました。Line 65文字 1file:///C:/Documents and Settings/アカウント/Application Data/Microsoft/Internet Explorer/Desktop.httMicr...
Active Desktopの修復ができない


Xmさんありがとう。
解決できました!

なんかあの白い画面見てるとちょいとイラっときてたので
よかったです!

今日もお仕事頑張ろう。

11

21

コメント

逃げてるのか追ってるのか

開放感キタ━━(゚∀゚)━━!!

やっと週末。
今週は雨が多かったから洗濯物が溜まっちゃって大変!
これ書いたら頑張ります。

今週は仕事の虫でしたが、
こんなに仕事ばっかりの生活は好きじゃないぜ。

弟が毎日のように遅くまで仕事をしてるのを見て、
あー、さぼれないなぁ(笑)と思ってます。
ダメな兄。
早く定時で終わるペースに持っていきたいです。

まだ仕事終わってないしんどいー(TдT)

11

20

コメント

自己結合をmodelに書いてたらエラーになるみたい。。。

CakePHPで自己結合させたかったので、
modelにこんな感じで記載していた。
例としてUserクラス

    var $belongsTo = array(
        'Parent' => array(
            'className'     => 'User',
            'foreignKey'    => 'parent_id'
        )
    );



そしたら
App::import('Model', 'User');
$aaa = new User();

のnewするところでエラーになってしまった。
これはダメってことなのかな。
書き方が間違ってるのかも。。。

11

20

コメント

AuthとACL使うと、毎回設定に1日くらいかかるのは、同じことをやってしまうから。。。

CakePHPでログイン認証とか権限関係の処理は、
AuthコンポーネントとACLを使うのですが、
毎回失敗するのでメモ。


例えば、groupsテーブルに
id=1, name='一般利用者'
id=2, name='店舗担当者'
id=3, name='管理者'
と入れた場合、

arosテーブルには
parent_id | model | foreign_key | alias | lft | rght
NULL       Group   1                NULL  1   2
NULL       Group   2                NULL  3   4
NULL       Group   3                NULL  5   6
と入れる。

基本、これでOK。
arosテーブルはmodel→GroupテーブルかUserテーブルの名前、
foreign_keyにそのmodelのidが入ります。
なので、グループを格納するテーブル名がorganizations(組織??)とかなら
'Organization'を設定。


んでモデルのUserに↓を追加

    function parentNode() {
        if (!$this->id && empty($this->data)) {
            return null;
        }
        $data = $this->data;
        if (empty($this->data)) {
            $data = $this->read();
        }
        if (!$data['User']['group_id']) {
            return null;
        } else {
            return array('Group' => array('id' => $data['User']['group_id']));
        }
    }

    /**    
     * After save callback
     *
     * user の aro を更新する *
     * @access public
     * @return void
     */
    function afterSave($created) {
            if (!$created) {
                $parent = $this->parentNode();
                $parent = $this->node($parent);
                $node = $this->node();
                $aro = $node[0];
                $aro['Aro']['parent_id'] = $parent[0]['Aro']['id'];
                $this->Aro->save($aro);
            }
    }



モデルのGroupクラスに↓これを追加

function parentNode() {
        return null;
    }



そして、マニュアルに記載されている
自動化ツールとしてAclsControllerを作成
中身はこちらの2点
function build_acl
http://book.cakephp.org/ja/view/647/An-Automated-tool-for-creating-ACOs

function initdb
http://book.cakephp.org/ja/view/648/Setting-up-permissions


あとは全機能のControllerをfunctionだけ全部作って、
/acls/build_acl
を実行後、
/acls/initdb
を実行。

acosテーブルとaros_acosテーブルに
データが格納されたことを確認する。

最後に、まじめに作ったログイン画面でユーザ登録し、
arosテーブルが
id | parent_id | model | foreign_key | alias | lft | rght
1   NULL       Group   1                NULL  1   4
2   NULL       Group   2                NULL  5   6
3   NULL       Group   3                NULL  7   8
4   1             User     1                NULL  2   3
となれば、ACLの準備完了☆-(ノ゚Д゚)八(゚Д゚ )ノイエーイ

あとはAppControllerのbeforeFilterに
Authの設定を記述し、
ログインが不要な機能があれば、
その画面のコントローラのbeforeFilterで

    function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allowedActions = array('*');
    }


*のところは、各function名にすると、そこだけになるので、
個別指定も可能。
その時はbeforeFilterも記載しないと、
そこで画面真っ白になったはず(うろ覚え)。


毎回arosにグループのデータを入れ忘れたり、
グループのノードを考慮し忘れたりしちゃうので
そうするとユーザ登録した時に
arosに変なデータができちゃうか、
arosにデータが作成されずに、ログイン後画面が見れないです。

うっかりも積もれば1日かかっちゃうこともあったので、
この辺は一つずつミスらないようにしないとなぁと
毎回思うんですが、もう3回も同じことしてる(´∀`*)

ようこそ!

ブロとも申請フォーム

ブロ友申請大歓迎です!
一覧に表示されるので自動で相互リンクになります!

>> ブロ友申請はこちら <<

検索フォーム

最近のコメント

メールフォーム

名前:
メール:
件名:
本文:

FC2ブログランキング

人気ブログランキング

人気ブログランキング

ブログ村

アクセスランキング

[ジャンルランキング]
育児
1128位
アクセスランキングを見る>>

[サブジャンルランキング]
パパ育児
86位
アクセスランキングを見る>>

やーんは今、

ブロとも一覧

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。