CakePHP2.4:削除したユーザーでログイン不可にする処理

AppControllerに1行記述するだけ。

 

public $components = array(

 'Session',

 'Auth' => array(

  'loginAction' => array(

   'controller' => 'users',

   'action' => 'login'

  ),

  'authenticate' => array(

   'Form' => array(

    'userModel' => 'User',

    'fields' => array(

     'username' => 'code',

     'password' => 'password'

    ),

    # 以下の1行追加で、削除したユーザーではログイン不可になる

    'scope' => array('User.deleted' => 0),

   )

  )

 ),

);

 

以外に簡単!!

Cakephp2:Error: Database connection "Mysql" is missing, or could not be created.

MAMP上で作業していて、Cakeフォルダ/app/Console/Command/EverydayShell.php

app/everyday.shでたたくと、以下のようなエラーが出た。

 

Error: Database connection "Mysql" is missing, or could not be created.

 

Mysqlにつながっていません!(要約)

ということらしいけど、EverydayShell.php以外の、例えば普通のControllerからDBに接続は普通にできる。

 

で何かと思ったら原因はMAMPにあったらしく、

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

 

をdatabase.phpのpublic $defaultの1番下に書くと解決した。

めでたしめでたし

bootstrap3のドロップダウンメニューをクリックではなくマウスオーバーで使う方法

環境:bootstrap3.0.3

 

bootstrap.cssの一番下に以下のように書き込む

 

ul.nav li.dropdown:hover > ul.dropdown-menu {

  display: block;    

}



これだけでオーケー。

以下参考サイト
http://designup.jp/bootstrap3-0-dropdown-hover-76/

CakePHP:セッション切れる時間を調整

core.phpに218行目付近(CakePHP2.4.3)に以下のように記述されている。

 Configure::write('Session', array(

    'defaults' => 'php',

));

 

これを下のように書き加える

Configure::write('Session', array(

    'defaults' => 'php',

    'timeout' => 1440, // 単位は「分」

));

 

ソースはこちらのブログ

http://wataame.sumomo.ne.jp/archives/3983

オブジェクト指向:関数名の付け方で悩んでみる

以下CakePHPのケース

 

$this->モデル名->find_取得データ_By_引数

(「_」の部分は単語の区切りをわかりやすくするために入れただけ。実際は「_」は入れない)

 

UsersController.phpからComment.idを引数にComment.php内の関数を使ってComment.titleデータを呼び出す時

 

findCommentTitleByCommentId

という関数名になる

 

じゃあ取得データが複数の時は?

引数が複数の時は?

 

わかりやすい関数名つけるのって難しい、、、

CakePHP2:モデルからも、コントローラーからも、ビューからも呼べる

いい記事見つけた

http://chipomote.hatenablog.com/entry/2014/02/11/155648

 

モデルでも

コントローラーでも

ビューでも

Configure::read('◯◯◯');

すれば呼び出せる

時間に関するPHPメソッド

●Datetime

日付と時刻を扱うクラス

例:

$dt = new Datetime(); 現在の時刻

$dt = new Datetime(‘2014-01-15 10:00:00’);

・format()メソッド -> 表示をする

 

0つく

Y

m

d

H

i

s

0つかない

--

n

j

G

--

--

 

・diff()メソッド -> Datetimeオブジェクトの差を求める。DateIntervalオブジェクトを生成する

・add()メソット -> DateIntervalオブジェクトを足す

・sub()メソッド -> DateIntervalオブジェクトを引く

 

●DateInterval

時間(日付の間隔)を表すクラス

・format()メソッド-> 表示をする

 

0つく

%Y

%M

%D

%H

%I

%S

0つかない

--

%m

%d

%h

%i

%s

 

●時間に関するメソッド

・date() -> Datetime::format()メソッドと同じフォーマットで日付のフォーマットができる関数

第2引数にUNIXタイムスタンプを渡すことができる

例:

date(‘Y-m-d’, time()) -> 2014-01-15

・time() -> 現在のUNIXタイムスタンプを返す

・mktime() -> ’10, 0, 0, 1, 15, 2014’などを引数にとって、UNIXタイムスタンプを返す

・strtotime() -> ‘now’ や ’+1day’ や ’+1week’などを引数にとって、UNIXタイムスタンプを返す

 

●「○○時間後の日時」を表示

$dt = Datetimeオブジェクト->add(DateInterval::createFromDateString('○year ○month ○day ○hour ○min ○sec'));

 

cf. Datetimeオブジェクト->sub