第16回何でもできるようになった1.2のデータバリデーション機能(1/2):基本編 秋田真宏 2009-07-17
第16回何でもできるようになった1.2のデータバリデーション機能(1/2):基本編 秋田真宏 2009-07-17
※ページが正常に表示されない場合 AddBlockなどの広告ブロックツールがONになっていると、ページの一部が表示されないことがあります。これらのツールをOFFにしてみてください。
状況 Categoryモデルへの外部参照があるFoodモデルを利用するコントローラーにおいて、 Foodに項目を新規登録しようとすると、 Call to a member function find() on a non-object という旨のエラーがあり、対象のコードを見ると、 $categories = $this->Food->Category->find('list'); に問題ありとのこと。 ミス内容 このコントローラー(FoodsControler.php)は利用モデルが明示されていなかった。 解決方法 public $uses = array('Food', 'Category'); を明記し、 $categories = $this->Category->find('list'); と訂正したところ、新規登録時のフォーム生成に成功した。 反省 コントローラーで利用するモデ
いつも使っているCakePHPのプラグインを紹介します。 他にもいろいろプラグインはありますが、一番良く使うプラグインを紹介します。プラグインを使えば工数半分くらいになるかもです。 ■Twtitter Bootstrapプラグイン 【BoostCake】 BoostCake – Bootstrap Plugin for CakePHP TwitterBootstrapを簡単に利用できるプラグインです。Twitter Bootstrapを利用するのであれば、必須のプラグインです。 ■OAuthクライアント実装プラグイン 【OpAuth】 Opauth – Multi-provider authentication framework for PHP OAuthでログインする機構を提供してくれるプラグインです。工数が半分くらいになると思います。 ■ユーザ登録・管理機構実装プラグイン【CakeD
今回はTwitterのOAuth認証をCakePHP2.3で実装してみたいと思います.CakePHP1.3系では実装したことはありましたが,最近は作ってなかったので復習してみます. 1.Twitterのコンシューマーキーとコンシューマーシークレットの取得(前回の記事参照) Twitterのコンシューマーキー(Consumer key)等の取得 | offsidenowの日常を綴ったブログ 2.CakePHPにプラグインを導入 今回はTwitterKitというCakePHPのプラグインが最近は主流っぽいので利用してみたいと思います. TwitterKitの導入 ・git submoduleを使う場合 CakePHPのフォルダがGitで管理されている場合はgit submoduleコマンドを使うのがナウいらしいです. CakePHPのフォルダ直下で $git submodule add -f
URL rewriting is not properly configured on your server. 1) Help me configure it 2) I don’t / can’t use URL rewriting cakephp をインストールした際に以下のようなエラーが出る場合があります URL rewriting is not properly configured on your server. 1) Help me configure it 2) I don’t / can’t use URL rewriting mod_rewriteができねーよって言っているのですが嘘です(本当の場合ももちろんありますが) cake.generic.cssを読み取れていないと発生します。 おとなしくindex.phpのあるディレクトリにデフォルトのcssディレクトリをアップ
元記事はこちら。 By Frank CakePHPのルーティングはとてもパワフルな機能で、URLを綺麗に見せるのに使われています。ドキュメントが用意されているにもかかわらず把握するのが難しいようであると、IRCの#cakephpサポートチャンネルの経験から知りました。この記事ではその状況に一石を投じ、ルーティングの主な機能について解説します。コメント欄からのサポート要請はお断りします。サポートはGoogleグループかIRCのチャンネル#cakephpで得られます。 ルートの適用 ルーティングが使用されるべき一般的なケースは、URLを綺麗に見せるためだけにコントローラが命名される場合でしょう。ほかにも検索エンジンからのリンクがデッドリンクにならないように過去のサイトとマッチするURLにするといった使い方もあります。 誤った考えとして、「ルーティングは適切なコントローラとアクションにリダイレク
さてこんにちは。SofPyon です。 CakePHP で Twitter ログインを実装できるプラグイン「TwitterKit」が、なぜか自分の環境だと動かない。。。 Twitter で ログイン みたいなボタンをクリックしても、なぜか、redirect先が https://api.twitter.com/oauth/authenticate?oauth_token= となってしまう。原因がわからない。 で、TwitterKit 動かない、とググっても出てこない。もしかして、TwitterKit 動かないのは自分だけ!? 何か解決策はありませんか? 環境 PHP 5.4.24 Apache 2.2.26 Mac で動かしてます CakePHP 2.5.3 (このバージョンはダメなのか?) はあ。 追記(投稿日当日) TwitterKit のReadmeを読んでたらこんな記述が... Th
つかれた!大体上から人気ある順で並んでおります。 人気がちょっとあってもちょっと古いのは割と下にいます。 Croogo cakePHPで作られた高機能なCMSらしい。これを全部組み込んだり一部組み込んだりするとブログとかすぐにつくれるかも http://croogo.org/ CakeDC/utils 色々詰まってる便利なやつらしい。これにトラックバック実装するときのpingbackっていうのもありそうだな。つくんなきゃいけないから見てみよう。 CakeDC / migrations これは良さげ。データベースいじった履歴とかデータベースの共有とかその辺をなんか便利にしてくれるっぽい。 CakeDC / search これは多分有名なサーチプラグイン。でも使ったことない。サーチってそんな難しくないし。でもきっと便利にできてるんだろうから調べてみるのはいいかも。 CakeDC / users
こんにちは。お盆休みは地元に帰り、あさりが食べたいなぁと思い、冷蔵庫をあさり続けましたが、シジミしかありませんでした。シジミの申し子、勝利です。 お後が宜しいようで・・・ さぁ、茶番は終わりにして、今回は久しぶりのCakePHPネタです。 CakePHPで任意のログファイルへログを出力する方法をご紹介たいと思います。 どうぞよろしくお願い致します。 経緯や用途 理由なんて後からつければいーんです。自分自身が作りたいと決めたら作ればいーんです。 作業している際や、本番リリース後等に自分だけのログ出力ファイルやアプリケーションの仕様的にCakePHPのログ以外のログが必要になったり欲しくなったりしたことはないですか? もちろんログ出力だけであればCakePHPに備わっているものを使用したらいいと思うのですが、CakePHPでデフォルトで吐き出されるログによって汚されたりすると、自分が吐き出した
「ユーザーがログインしたらデータベースに最終ログイン日時をセットする」という処理を実装してみました。 users テーブルに last_login フィールドを DATETIME 型で作成していることを前提としています。 <?php // app_controller.php function beforeFilter() { $this->loginRedirect = array('controller' => 'users', 'action' => 'index', 'admin' => true); $this->autoRedirect = false; } loginRedirect でログイン後のリダイレクト先を指定しています。 autoRedirect を false にすることによって、ログイン後のリダイレクトが無効になり、login アクション内の処理が実行されるよう
とある事情で独自バリデーションチェックをかけた後、 $this->Model->create(); $this->Model->set($data); $this->Model->save(); としたのだが、どうしてもsaveできない。 で、原因はバリデーションチェック。cakePHPは、$validateを定義しているとsave時に勝手にバリデーションチェックをするみたい。余計なおせっかいだっつーの…。 まあ原因がわかれば対処は簡単で、 $this->Model->create(); $this->Model->save($data, false); と、第二引数にfalseを放り込んでバリデーションを無視するようにして解決。 しかしホントにおせっかいな機能だ…。
HOME » 代表者ブログ » Programming » PHP » CakePHP » [CakePHP] バリデーションのallowEmptyとrequiredを解説してみる CakePHPを使用していて、以前からわかっているようで、わかっていないような気がすることがありました。それはバリデーションルールにあるallowEmptyとrequiredです。 これって、わかるようでわかりにくい内容で、それをまとめたサイトもあるのですが、それを読んでもどうもシックリ来なかったりします。そこで、下記に自分用にまとめてみました。ちなみにCakePHPのバージョンは1.3です。 英語での意味 まず、それぞれの英語の意味を明記しておきます。 allowEmpty 空を許す、空を許可する required 要する、必要とする、命じる、要求する まあ、わざわざ書かなくてもわかることでしょうが、書いてお
Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られています。恐らく、それを見越してのデフォルトでのフォーミングだと思いますが。 echo $this->Form->input( 'field', array()); <!-- HTML -> <div class="input text"> <label for="field">Field</label> <input id="field" type="text" name="data[field]"> </div> divやlabelの出力をしない ためには、それぞれにfalseをオプションとして設定します。これで、inputを囲っていたdiv要素が出力されなくなり、前のlabelも出力されなくなり
function index(){ // ページング処理 $this->set('products',$this->paginate('Product')); } <?php echo $this->Html->script('jquery.infinitescroll.min', array('inline' => false)); ?> <?php echo $this->Html->script('products_index', array('inline' => false)); ?> <div id="products"> <?php // 表示内容 foreach($products as $product){ echo '<div class="product">'; echo '<h3>'.$post['Product']['title'].'</h3>'; echo '
開発が進んでいくと様々な機能ができてくるわけですが、中には似通ったモジュールが出来上がってきたりするので共通化していきたいという考えになってきます。 CakePHPでも、そのような共通のライブラリを作ることができます(前回同様、環境はCakePHP2系を前提としています)。 コントローラーから呼び出す共通ライブラリはコンポーネントと呼ばれ、様々なアクションやコントローラーファイルから利用することができます。 コンポーネントの配置場所は、Controllerディレクトリ内にあるComponentディレクトリです。 $ ls Controller/ AppController.php Component HogeController.php PagesController.php この中に、共通コンポーネント用のファイル、CommonComponent.phpを作ってみます。 <?php cl
CakePHP で静的なページを作成する方法です。 正確には CakePHP が出力するページなので静的ではなく動的なのですが、ページを簡単に作成することができます。 出力するページをテンプレートとして /views/pages/ ディレクトリ以下に作成します。 作成したテンプレートが hoge.thtml だとすると http://exmaple.com/pages/hoge でアクセスできます。 これだけで簡単にページを追加することができます。 コンテンツは静的なものですが、ビューなので例えばログイン状態によって表示を変更したりなどできますね。 なぜ /pages/hoge でアクセスできるかというと /app/config/routes.php で $Route->connect('/pages/*', array('controller' => 'pages', 'action'
スポンサードリンク CakePHP CakePHPはルールに従って テーブルのカラム名を付けます。 そのおかげでアソシエーションした時に 自動でカラムをつなげてくれるのですが、 基本は1テーブルに1つの外部キーです。 しかし、2つの外部キーがあって それぞれ参照先が同じテーブルの主キーだった場合の方法です。 スポンサードリンク モデルのアソシエーションでカラムを指定 モデルにアソシエーションを書くときは 基本、モデル名を書くだけで 自動に「テーブル名_id」でテーブルをつなげてくれます。 しかし、2つの外部キーがあって それぞれ参照先が同じテーブルの主キーだった場合は 「テーブル名_id」ではなく別の名前でカラム名を付けます。 そして、アソシエーションするときにカラムを指定します。 (例) Userモデル(usersテーブル)のidを Messageモデル(massagesテーブル)のse
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く