タグ

CakePHPに関するrandynetのブックマーク (21)

  • HABTMリレーションシップは悪であるという論争

    Ruby On RailsやCakePHPといったフレームワークのORマッパに存在するHas And Belongs To Manyという機能(通称:HABTM)があります。HABTMとは2つのデータモデルを中間のデータを介して関連させるデータモデルで冒頭の図のようなデータモデルです。筆者がこの省略形の読み方などについてTwitterで話していたところ、興味深いリプライを受け取りました。 @patrickjsparrow @yando if #cakephp copied that from Rails your doing it wrong. We never use HABTM because it's EVIL! — Evan Light (@elight) January 24, 2012 俺らはHABTMなんか使わない。なぜならHABTMは悪だからだ。 HABTMについて検索した

    HABTMリレーションシップは悪であるという論争
  • CakePHP ACL – アクセス制御リストを攻略する | hijiriworld Web

    ACLとは? Authコンポーネントは、ユーザ認証を実現する非常にシンプルで簡単なコンポーネントですが、あくまでも「そのユーザがログインしているか否か」ということのみです。 それぞれのユーザに応じて各種機能にアクセス権を設定するためのコンポーネント、それが「ACL – アクセス制御リスト(Access Control List)」です。 さて、このACL、CookBookにもチュートリアルがありますが、はっきり言って、これを読んでも理解不能です。むしろ読まないほうがいいと思います。 これが、ACLが難解と言われる要因でしょうか。 ACLのイメージ ACLは3つのデータベースから成り立っています。 ARO – ユーザ(ユーザやグループ) ACO – 対象物(ページやアクション) ARO_ACO – アクセス権の対応表 それぞれの関係を図で表すと、こんなイメージです。 要するに、ACLでは、ユ

  • CakePHP 2.0.1 を出しました(訳) - 24時間CakePHP

    このバージョンは、マルチバイトの出力がほとんどのブラウザでズタズタになってしまうという致命的なバグがあります。 以下の記事を参考にして、2.0.2以降にアップデートしてください。 CakePHP 2.0.2 のリリース - 24時間CakePHP CakePHP2.0.1がリリースされましたが、ちょっと待ったほうがいい ->2.0.2リリースで解決 - cakephperの日記(CakePHP, MongoDB) 訳 最初の2.0ブランチの保守リリースが出ました。変更は何かを学び、今すぐアプリケーションのアップデートを始めましょう! CakePHPコアチームは迅速にCakePHP2.0.1*1が利用可能になったことを誇りに思います。 2.0.1は2.0ブランチの最初のバグ修正・保守リリースになります。 2週間前非常に好評であった2.0安定版のリリースから、95のコミットと6の問題の解決があ

    CakePHP 2.0.1 を出しました(訳) - 24時間CakePHP
  • CakePHP 2.0 のリリース(訳) - 24時間CakePHP

    訳 CakePHPコアチームはメジャーなバージョン番号のジャンプをアナウンスすることに興奮を覚えています。 CakePHP 2.0 安定版が出ました! 私たちはこのリリースに永久の時を注ぎ込み、このバージョンのフレームワークに素晴らしいアイデアの数々を成すことができました。 これは2.0が意味するものの応急な概要です: PHP4のサポートを打ち切り、全てのコードをPHP5.2以上に厳密に尊守するように書き直しました。 例外、PDO、SPL、json_encodeなどなどのネイティブな機能の使用。 ファイル命名へPSR-0を取り入れました。あらゆるクラスは同じ名前を用いてファイルにマッピングされます。覚えることが少なくなりました! 新しいエラーと例外のハンドラーは簡易な設定や、ページが見つからないエラー、承認エラーなどのエラーとの楽な協調、など数多くのものを提供します。 マルチリンガルな開発

    CakePHP 2.0 のリリース(訳) - 24時間CakePHP
  • CakePHP - Build fast, grow solid | PHPフレームワーク

    randynet
    randynet 2011/06/08
    jQuery で Growl のようなメッセージ表示
  • CakePHP 1.3でsessionを使いたくない - pekeqのブログ

    CakePHP 1.3 config/core.phpでConfigure::write('Session.start', true)である 特定のcontrollerだけsessionを使いたくない Sessionは使いたくないが、Securityコンポーネントのように、内部でSessionを読み込んでいるコンポーネントを使いたい Session.startをfalseにすりゃいいかと思っていたら、beforeFilter()に書いてはダメで、constructClasses()をオーバーライドするのがいいようだ。 <?php class HogeController extends AppController { var $components = array('Security'); function constructClasses() { Configure::write('Se

    CakePHP 1.3でsessionを使いたくない - pekeqのブログ
  • Account Suspended

    Account Suspended This Account has been suspended. Contact your hosting provider for more information.

  • 1-byte.jp - CakePHPプラグインのまとめ – 認証編

    CakePHPのフォーラムで知ったのですが、Jose Diaz-Gonzalezさんがプラグインのまとめを書いてくれています。 CakePHP Plugins – A Biblical Retelling CakePHPに限らずフレームワークの良いところ、それはやはりソースコードを再利用できることです。 そしてそのフレームワークの利用者が多ければ多いほど、再利用できるソースコードが増えていきます。 CakePHPにはビヘイビアやコンポートネント、ヘルパーから始まり、そして様々なものを統合して活用できるプラグインといったコードを再利用する仕組みが採用されています。 今回は先ほど紹介したブログの記事を日語訳し、自分なりにまとめて、紹介します。 [注意] 初めてまともに訳すので、かなり意訳してます。ここはおかしい、変だ、という点があればご指摘ください。 認証と承認 Debuggable’s

  • CakePHPを使ったMVC設計のベストプラクティス - Sooey

    CakePHPを使ったMVC設計のベストプラクティス 個人的にはCakePHPはあまり好きではないのですが、CakePHP開発メンバーによるMVCデザインの記事 (CakePHP のおいしいべ方)で紹介されていたBest Practices in MVC Design with CakePHP (php|architect’s C7Y)はMVCフレームワーク利用者にとってとても有用な情報だったので、訳してみました(php|architectの方には翻訳許可を頂いています)。 この記事を読んでドメインモデルに興味を持った方は、エンタープライズ アプリケーションアーキテクチャパターン(PoEAA)やDomain-Driven Design: Tackling Complexity in the Heart of Softwareに手を出してみるのもいいかも。他に、InfoQにユーザー登録すれ

  • ZiSTA Cake: 'joins'で明示的にテーブルをJOINする

    posted by MAX on Created: 2008-03-31 10:19:53 Modifyed: 2008-03-31 10:26:52 CakePHPのアソシエーションは便利で、hasOneとbelongsToを指定してあるものは自動的にテーブルをJOINしてデータを取得してくれます。 しかし、Aテーブル-belongsTo -Bテーブル-belongsTo -Cテーブルのようなテーブルのような構成の場合、AテーブルからCテーブルまでJOINしてデータをfindしようとして、いくらrecursiveのレベルを上げても出来ません。(JOINではなく新たなSQLが発行されます。) このような時は、'joins'パラメータが利用できます。 CakePHP 1.2では検索条件を引き数ではなく、配列1つにまとめて指定する事が出来ます。 $options['condit

  • ZiSTA Cake: CakePHPのACLを理解する(Authコンポーネントから探る) その2

    posted by MAX on Created: 2009-02-22 12:53:32 Modifyed: 2009-11-24 22:20:42 前回ACLの利用方法には「アクション・モード」と「CRUD・モード」の使い方があると説明しました。「アクション・モード」と「CRUD・モード」とはAuthコンポーネントの$authorizeプロパティを'actions'または'crud'のどちらにセットするかで決定します。 AuthコンポーネントがAclコンポーネントを「アクション・モード」と「CRUD・モード」それぞれの場合にどのように使ってパーミッションをチェックしているかを見て理解してみます。実際のパーミッションをチェック方法が分かるとACOに何を登録するのか、どのようにパーミッションを設定するのかが見えてきます。 Authコンポーネントは次のいずれかのコードでAclコンポーネン

  • ZiSTA Cake: CakePHPのACLを理解する(Authコンポーネントから探る) その1

    CakePHPのACLが難しい。CakePHPに限らずACLそのものを理解していなかったのかも知れません。 CakePHPのマニュアルの5.1 アクセス制御リストや10.2 ACL を制御するシンプルなアプリケーションを読んだりしても今ひとつ理解出来ていない何かがありました。 マニュアルのACL部分以外にもAuthコンポーネント内にACLに関する記述があったのでAuthコンポーネントに関するマニュアルやAuthコンポーネントのソースを読んだりしました。AuthコンポーネントはACLのパーミッションをチェックする実例だったので、結局Authコンポーネントのソースを読んだ事がCakePHPのACLを理解を進める重要なポイントでした。ちなみにAuthコンポーネントはコントローラの各アクションの実行前に認証済みユーザーのACLパーミッションをチェックする機能を備えています。 Authコンポー

  • CakePHP Sucks! - babie, you're my home

    (2008-09-04 に書いたものですが、お蔵に入れていても何なんで、公開します。もしかしたら、というか多分、情報が古い可能性があります。) PHP自体は置いといて。リアルで CakePHP すげー、とか言ってる人がいたらかわいそうな目で見ると思う。 だいたい、Active Record を名乗るなっつーの。ていうか find で返ってくるのがアクティブレコードオブジェクトじゃなくてただの連想配列な時点で違うよな。開発者は PofEAA を10回読み直した方がいい。 Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))posted with amazlet at 10.08.11Martin Fowler Addison-Wesley Professional

    CakePHP Sucks! - babie, you're my home
    randynet
    randynet 2010/08/13
    CakePHP すげーって思っている人はいないと思うけど
  • コンテイナブル :: 主要なビヘイビア :: マニュアル :: 1.3 Collection :: The Cookbook

  • CakePHP Security コンポーネントのまとめ | Sun Limited Mt.

    トークンが一致しないと SecurityComponent の blackHole メソッドが実行されます。このメソッドでは header('HTTP/1.0 404 Not Found'); を出力して exit します。(画面は空白) 任意の処理を実行したい場合は blackHoleCallback でコールバック関数を指定します。 設定できるのは同じコントローラ内のアクションのみになります。 function beforeFilter() { $this->Security->blackHoleCallback = "securityError"; $this->Security->requireAuth('login'); } function securityError() { die("security error!"); } トークンチェックをするアクションを複数指定するとき

  • 201006cakephp1 3のflashmessageをtwitter風にしてみる

    Step 3. After that, you need to click here on the official GB WhatsApp download APK.ⓒThe GB WhatsApp icon is a simple but elegant icon that conveys the essence of the application in a clear and concise way. However, people are always opposed to novelty. That's why people get bored with the GB WhatsApp icond . So do you know how to change its icon? It's not difficult to change, just follow my steps

  • CakePHP 1.3のキャッシュやスラッグ(Inflector::slug)に要注意 - (DxD)∞

    事例 例えば、以下のような場面を想定してみます。 ビューから「element」というエレメントを複数箇所で呼び出す(あるいは、複数のビューから同じエレメントを呼び出す)。 一方では「$vars1」を渡し、もう一方では「$vars2」を渡す(呼び出し箇所ごとに異なる値を渡す)。 エレメントの出力をそれぞれ別々にキャッシュする。 このような場合、エレメントの呼び出し時に、キャッシュのキーとしてそれぞれにユニークな文字列を指定することになっています。 <?php e($this->element('element', array('cache' => array('time' => '+1 hour', 'key' => 'element_1', 'vars' => $vars1))); ?> <?php e($this->element('element', array('cache' =>

    randynet
    randynet 2010/05/12
    自動テストに組み込んでおけば良いか
  • folder.phpの使い方 - cake bake diary

    Folderオブジェクトを生成 <?php uses('folder'); $folder = new Folder('/test'); ?> 新規作成*1 <?php $folder->create(); ?> カレントディレクトリを指定ディレクトリにコピーする <?php $folder->copy('/test2'); // もしくは $folder->cp('/test2'); ?> カレントディレクトリを指定ディレクトリに移動する <?php $folder->move('/test3'); // もしくは $folder->mv('/test3'); ?> カレントディレクトリを中身のファイルごと削除する <?php $folder->delete(); // もしくは $folder->rm(); ?> カレントディレクトリのファイル一覧を取得*2 <?php list($d

  • file.phpの使い方 - cake bake diary

    Fileオブジェクトを生成 <?php uses('file'); $file = new File('/test/test.txt'); ?> 新規作成*1 <?php $file->create(); ?> ファイル読み込み <?php $ret = $file->read(); ?> ファイルの末尾に追記 <?php $file->append('test!'); ?> ファイル書き込み(全て上書き)*2 <?php $file->write('test!'); ?> ファイル削除 <?php $file->delete(); ?> フルパスを取得 <?php $path = $file->pwd(); ?> 拡張子を除いたファイル名を取得 <?php $name = $file->name(); ?> 拡張子を取得 <?php $ext = $file->ext(); ?> ファイ

  • CakePHP routes.phpの確認はユニットテストで

    routes.phpを仕様に合わせて設定しておきます。 <?php // Router::connect('/:user_id/edit', array('controller' => 'user', 'action' => 'edit')); Router::connect('/', array('controller' => 'top', 'action' => 'index')); Router::connect('/:user_id/*', array('controller' => 'user', 'action' => 'index')); // Nothing Router::connect('*', array('controller' => 'nothing')); ?> 最後はシステムが取るべきURL以外ならNot Foundを出すように設定しています。これにより想定外