タグ

ブックマーク / kwski.net (7)

  • ログローテーション

    CakePHP 2.xではbootstrap.php内にあらかじめアプリケーションログの設定が書かれています。2.xで日付ごとにログファイルが切り替わるよう設定してみました。 日ごとにログを切り替える設定 app/Config/bootstrap.phpを以下のように変更もしくは追加して下さい。 // app/Config/bootstrap.php[変更or追加 後] /** * Configures default file logging options */ App::uses( 'CakeLog', 'Log'); CakeLog::config( 'debug', array( 'engine' => 'FileLog', 'types' => array( 'notice', 'info', 'debug'), 'file' => date( 'Ymd') . '_' . '

    ログローテーション
    tuki0918
    tuki0918 2014/01/20
  • コントローラ内でバリデーション処理を呼び出す

    CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。 バリデーションをsaveから切り出して行う ポイントは、1.のvalidatesの前にデータ($this->request->data)をdataをModelにsetする必要があるところです。(「若干異なる処理体系」とはここのことです。)この処理を行わないとvalidatesは常にtrueを返します。 validatesメソッド内で、invalidFieldsメソッドが呼び出されます。このメソッドは[Model]->validationErrorsにバリデーションのエラーメッセージ(message)を格納します。バリデーションNGの場合、ここからメッセージの取り出しが可能です。 // 1. モデ

    コントローラ内でバリデーション処理を呼び出す
  • Cookieログイン

    今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwriteとreadです。わかりやすい。 ログイン時に、「ログインしたまま」というチェックボックスをつけてログインしてきたユーザのクッキーをwriteして、次回そのユーザが訪問した際に、クッキーをreadして自動的にログインさせます。 Cookieコンポーネントの使用 var $components = array( 'Cookie', } 使用する際は、コントローラ内でコンポーネントを読み込んで下さい。 writeメソッド (クッキーをつくる) ログイン画面にチェックボックスを用意します。今回は、remember_meにします。以下は、Userモデルのusernameとpasswordという前提にして

    Cookieログイン
    tuki0918
    tuki0918 2013/11/13
  • ユーザ登録(仮登録・メール・本登録)

    以前1.3版で投稿した「ユーザ登録」処理の2.x版を作成しました。フローは同じで以下のようにします。 1. メールアドレス・パスワードでユーザ登録 2. この時点では仮登録として、登録用のURLリンクをメールで送付 3. 送付されたリンクをクリックして「登録完了(activate)」とする ユーザ(users) テーブル statusを用意し、デフォルトを1としています。"1"を仮登録状態でログイン不可、"0"を登録としログイン可能にします。その制御は、「scope」が使えそうです。 -- usersテーブル CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL AUTO_INCREMENT , `username` VARCHAR(255) NOT NULL , `password` CHAR(128) NOT NULL ,

    ユーザ登録(仮登録・メール・本登録)
    tuki0918
    tuki0918 2013/10/19
  • ログインに追加の条件を付与する「scope」

    ユーザ登録では、仮登録処理(status=1)から送付したメール内のリンクをクリックしてもらい登録(status=0)を行ってもらう実装をしました。仮登録の状態ではログインできないように実装するには、1.3では「userScope」を使用しました(記事)が、2.xでは「scope」に変更されているようです。 Authコンポーネントを呼び出す際に以下のように定義して下さい。 2.0から「Authenticate type」というものが追加されており、今回はフォームからpostされた認証に対して追加を行うため'Form'に追加しています。(参考) var $components = array( 'Auth' => array( 'authenticate' => array( 'Form' => array( // 認証されるには、「Userのstatusが0である必要がある」を追加する

    ログインに追加の条件を付与する「scope」
    tuki0918
    tuki0918 2013/10/03
  • CakeEmailでメール送信(@gmail)

    CakePHP 2になって追加されたクラスCakeEmailがシンプルに使えます。これを使用してメール送信を行う処理を実装してみました。 CakeEmailクラスの読み込み /app/Config/bootstrap.php(全体的に使用する場合)もしくは各々の(使用する)コントロールに定義します。 App::uses( 'CakeEmail', 'Network/Email'); CakeEmailの設定 database.phpと同様、/app/Config下に設定ファイルが用意されています(email.php.default)ので、email.phpにリネームして下さい。そこに使用するメールサーバの設定を行います。以下はGmailからの送信設定を追加しています。 // /app/Config/email.php class EmailConfig { public $default

    CakeEmailでメール送信(@gmail)
    tuki0918
    tuki0918 2013/10/02
  • 複数ファイルアップロードフォーム

    CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) <?php echo $this->Form->create( 'Upload', array( 'type'=>'file', 'url' => '/uploadmulti', 'enctype' => 'multipart/form-data')); echo $this->Form->input( 'files.', array( 'type' => 'file', 'multiple')); echo $this->Form->submit( 'upload'); echo $this->Form->end(); ?> 配列 Array ( [files] => Array ( [0] => Array ( [name] => bg-

    複数ファイルアップロードフォーム
    tuki0918
    tuki0918 2013/09/26
  • 1