タグ

cakephpに関するknoのブックマーク (38)

  • CakePHP の書き方 | php-tips.com

    この記事は、CakePHP3 Advent Calendar 2016 25日目の記事ではありません。 まとめ Controller/Componentにビジネスロジックを書かない カスタムfindを活用しよう 1テーブル1モデルではなく、場面によってモデルクラスを増やそう Modelless Form / Tableless Modelを活用しよう beforeSave/afterSaveは諸刃の刃 Behaviorにビジネスロジック書くのもあり View層ではView Cell/View Blockを活用しよう CRUDプラグインお勧め この記事を書いた動機 CakePHPにおいてビジネスロジックに該当するものをComponentに書くという記事を見かけるたびに、それはアンチパターンじゃないのと感じている日々。 ビジネスロジックをどこに書くべきか、共通処理をどこに書くべきかというのを、

    CakePHP の書き方 | php-tips.com
  • [CakePHP] Setクラスを使ってコード量を減らす | バシャログ。

    iPhoneを買って良かったことの半分はGoogle Mapsが歩くときのナビになることです。tanakaです。今回は、CakePHPを使うときにSetクラスを使ってコード量を減らすサンプルを紹介します。Setクラスは、配列を多用するCakeだからこそ「使える」ライブラリといえます。 配列の深い場所から値をとりだして連結する Set::extract() 例えば、ブログアプリを作っているとします。ブログの記事にはタグを付けることができて、タグのデータは次のようにDBから取り出したとしましょう。 Array ( [0] => Array ( [Tag] => Array ( [id] => 1 [name] => PHP [created] => 2009-09-15 21:41:22 ) ) [1] => Array ( [Tag] => Array ( [id] => 2 [name]

    [CakePHP] Setクラスを使ってコード量を減らす | バシャログ。
  • https://www.multiburst.net/sometime-php/2009/02/how-to-works-cakephpp-on-subdirectory/

  • [cakephp 1.3] Button or Submit

    <input type="button">を作りたかったんだけど $this->Form->input('button',array('type'=>'button');としても <button></button>しかできないし、困っていたんだけど、色々やってみたら 解決したので書いておく。 このように書くと echo $this->Form->submit('送信',array('type'=>'button','div'=>false,'label'=>false)); echo $this->Form->submit('送信',array('type'=>'submit','div'=>false,'label'=>false)); echo $this->Form->button('送信',array('type'=>'button','div'=>false,'label'=>f

    kno
    kno 2013/10/31
    仕様がおかしい
  • [CakePHP]Modelのメソッド色々。 YARETOKO「ヤレトコ」メインブログ

    CakePHPでよく使うモデルのfindメソッドやsaveメソッドなどの他にも、DBテーブルの情報を取得できるメソッドがある。 以下にメモを記します。 Model::getColumnTypes() フィールド名とカラムの型を取得できる $this->Model->getColumnTypes() Array ( [id] => integer [name] => text [created] => datetime [modified] => datetime ) テーブルのカラム名を全て取得する場合は array_keys($this->getColumnTypes()) Model::getColumnType() 指定したカラムの型を取得できる $this->Model->getColumnType("id") integer Model::hasField() 指定したフィールド

  • CakePHP の Model::find() の条件式 (NULL の扱い) - エンジニアきまぐれTips

    CakePHP 1.3 にて、 Model::find() の条件式で NULL の扱いを考慮する必要があった。 "IS NULL" を表現したい場合 条件式: <?php $conditions = array('hoge' => null); Where句: WHERE "hoge" IS NULL "IS NOT NULL" を表現したい場合 条件式: <?php $conditions = array('NOT' => array('hoge' => null)); Where句: WHERE NOT ("hoge" IS NULL) "IS NULL" の他に別の値も OR 条件で指定したい場合 条件式: <?php $conditions = array( 'OR' => array( array('hoge' => null), array('hoge' => '1') )

    CakePHP の Model::find() の条件式 (NULL の扱い) - エンジニアきまぐれTips
  • findで複数のORを使う場合はarrayで囲む - こんにちはこんにちはmonmonです!

    CakePHPでfind使うとき SELECT * FROM t WHERE "id" = '1' AND (("status" = '1') OR ("flg" = '1')); というSQLが書きたければ find('find', array( 'conditions' => array( 'id' => 1, 'OR' => array( 'status' => 1, 'flg' => 1, ), ), )); みたいな感じで書くと思います。 で、今回2個のORが使いたいなと思ったんですが、 普通に書いてしまうと find('find', array( 'conditions' => array( 'id' => 1, 'OR' => array( 'status' => 1, 'flg' => 1, ), 'OR' => array( 'status' => 2, 'flg' =>

    findで複数のORを使う場合はarrayで囲む - こんにちはこんにちはmonmonです!
  • 今時なCakePHPでの開発環境!? - kaz29

    前職を退職してもう半年以上経ってしまいました。おかげさまで、レガシーなコードとのバトル等色々お仕事しています。 さて、先日のPHP Matsuri2012での@ryuzeeさんの発表を聞いて、開発環境や手法を改善するべく、今月から始まったプロジェクト用の環境を構築しています。 CakePHPは最新で! CakePHPの最新stable版は 2.2.3 ですが、既に 2.3.0-beta が公開されています。幾つか2.3.0-betaの機能で使いたかったものがあったのと、今回のプロジェクトのリリース時期が来年の5月という事もあって、2.3.0-beta を使って開発をしています。来年の5月なら2.3.0Stable版がリリースされるんじゃないかとの読みです(^^;さて、どうなるでしょうかw? 出来る限り公開されているPluginを使う 前職の職場では、ある程度蓄積された自前のPluginがあ

    今時なCakePHPでの開発環境!? - kaz29
    kno
    kno 2012/11/30
    ふむふむ ところでお元気そうでなによりです(ナゾ
  • requestAction :: その他の便利なメソッド :: コントローラのメソッド :: コントローラ :: CakePHPによる開発 :: マニュアル :: 1.3コレクション

  • cakephp1.2 or 1.3でmodel/componentなどを共有する方法 - UNIX的なアレ

    cakephpで複数のプロジェクトを作成したとき、お互いにmodelやcomponentを共有したいときは稀にありますよね。たとえば、nanapiの場合ですとPC版モバイル版もあったりします。 そんな時、プロジェクトは別にするけど一部共有したいmodelがでてきます。最初はmodelをコピーしてつかっていたのですが、複数管理が非常に面倒だったため共有する方法を調べてみました。 cakephp1.2の場合 共有の方法は、1.2と1.3で変更されています。まずは1.2の方法を紹介します。 app/config/bootstrap.php <?php $modelPaths = array( '/path/to/project_1/app/models/', '/path/to/project_2/app/models/', ); $componentPaths = array( '/path/

    cakephp1.2 or 1.3でmodel/componentなどを共有する方法 - UNIX的なアレ
  • [CakePHP]FormHelper::datetime()まとめ

    概要 CakePHPのFormヘルパーのdatetimeのパラメータをいっつも忘れてそのたびにFormヘルパーのソースを調べるのが馬鹿らしくなってきたのでここら辺でメモしておきます。 パラメータ FormHelper::datetime($fieldName, $dateFormat = ‘DMY’, $timeFormat = ’12’, $selected = null, $attributes = array(), $showEmpty = true) $fieldName: モデル.フィールド名。いつもどおり。 $dateFormat: 年月日の並び順。不要な場合は”NONE”を指定。そのほかは以下のとおり。 “DMY” “MDY” “YMD” $timeFormat: 時間の表示形式。”12″もしくは”24″。不要な場合は”NONE”を指定。 $selected: 初期選択値の指

    [CakePHP]FormHelper::datetime()まとめ
  • [CakePHP2.0]複数サブドメインでモデルを共有する

    サイトの設計上、管理画面と公開画面をサブドメインで分けることになりました。 とは言え、Vendorやモデルは共有したので、ちょっとCakePHPの設定をいじらないといけません。 ControllerとViewだけを切り分けて、他のファイルを共通化するというのが一番いいのかな? フォルダ構成はこんな感じになりました。 root ├cake │├app │└cake ├www.example.com(公開用) │└public_html └admin.example.com(管理用) └public_html 各public_htmlフォルダのindex.phpで、「ROOT」と「APP_DIR」と「CAKE_CORE_INCLUDE_PATH」の定数を設定します。 今回の場合は以下のようになりました。 if (!defined('ROOT')) { define('ROOT', dirnam

  • RSSを取得しトピックス表示 – MT Systems

    RSSは、ニュースやブログの最新記事のタイトル、リンク先、概要などをXML書式で受け取れるデータである。この最新記事の情報配信を目的とするデータ(RSS)には、RSS1.0、RSS2.0、Atomなどと呼ばれるフォーマットがいくつか存在する。RSSも、 RDF Site Summary Really Simple Syndication Rich Site Summary のように、頭文字を取ったのか、当てはめたのかよく分からない(^_^)。Wikiに説明されているので、読んで見るのもいいかも。 さ て、最近RSSを読み込んで、タイトルとリンクを取り込む作業があった。PHP5が利用できたので、XMLReaderを利用したのだが、ここでも混乱の 種があった。それは、XMLデータを読み込んで解析するのに、自分で0からプログラミングしなくても「パーサ」と呼ばれるモジュールが利用できるのだが、 こ

  • 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にユーザー登録すれ

  • CakePHP1.3系アプリのCakePHP2.0-alphaへの移行という茨の道を俺たちは登り始めたばかりだ - Yamashiro0217の日記

    表題の通りすでに動いている既存のCakePHP1.3系アプリのCakePHP2.0-alphaへの移行を試しにやってみた。他にもこの茨の道を登り始めた人情報くれくれ。 追記: CakePHP2.0へのmigrationツールの作成も行われてるらしいよ。これ動かしただけでは絶対に動かないと思うけどw https://github.com/cakephp/cakephp/blob/2.0/lib/Cake/Console/Command/UpgradeShell.php @cakephperさん情報ありがとうございました。 :追記終了 移行に際してはCakePHPの公式資料である2-0-migration-guideを参考にする。あとはソースを読む。フォースを感じる。などといった手段を取った。 ちなみに、簡単なアプリで試しただけなので、はまりポイントは他にも多々あると思われる。 また、僕のとこ

    CakePHP1.3系アプリのCakePHP2.0-alphaへの移行という茨の道を俺たちは登り始めたばかりだ - Yamashiro0217の日記
    kno
    kno 2011/06/24
    これは茨道だわw
  • Ktai Library for CakePHP | ECWorks Blog

    携帯サイトを構築する場合の、各キャリア対応をサポートするライブラリと、それをCakePHPで利用するためのヘルパー・コンポーネントを公開いたします。ライブラリ体はCakePHPだけでなく他の環境でも使用することが出来ます。 【お知らせ】 ktailibrary.orgは諸事情ありまして閉鎖しました。 はじめに 携帯サイトを作成する場合、一般的には各キャリア向けにHTMLを作成し、それを振り分けして表示する仕組みを採用していたと思いますが、最近の携帯では、いくつかの仕様を除いてほぼ同じHTMLを閲覧することが可能になってきています。そこで、その「いくつかの仕様」についてを解決できるような仕組みができないものか…という経緯から、ライブラリが生まれました。 また、ライブラリは個人的に作成していたPHPライブラリがベースになっているのですが、CakePHPで使えるようにすることで「携帯サイト

  • CakePHPのRSSヘルパーの使い方まとめ

    『名前をつけてやる』で RSS を出力するのに CakePHPRSS ヘルパーを使ってみたんだけど、 これが便利便利。 いったん組み込めばあとは簡単に RSS を生成できるし、 ほとんど追加作業なしで複数の RSS を吐くこともできる。 ただ手元に資料があんまりなくて 導入に少し戸惑ったのでやったことメモ。 「使い方まとめ」って書いたけど、 要するに「何をやったか」です。 例として、 通常 http://example.com/posts/index に出しているデータを RSS に吐き出したい。 個別のポストのページは /posts/view/[ID] で見る。 PostsController から index のビューに $posts というデータが渡されている。 トップページは /posts/index にルーティングされている という状況設定で。 とにかく使えるようにする 次

    CakePHPのRSSヘルパーの使い方まとめ
  • cakephp の json 連携(php5.2.0 以降) - 夜の Discovery

    php5.2.0 より php-json という C エクステンションが php 体に取り込まれています。 omar kilani - projects - php-json http://www.aurore.net/projects/php-json/ この体に取り込まれた機能と prototype.js を使ってユーザー検索結果を json 形式で受け取る手順を紹介します。 まず、Ajax.Reqeust でリクエストを送ります。 new Ajax.Request( '/users/search', { method: 'get', parameters: '', onComplete: function(request) { try { var users = eval( '(' + request.responseText + ')' ); } catch (e) { ale

    cakephp の json 連携(php5.2.0 以降) - 夜の Discovery
  • メール受信からのシェル機能実行 - Writing Some Code

    空メール送信での会員登録や、メールに添付されたファイルをサーバに自動でアップロードなど、メール受信からのスクリプト実行というのは様々なシーンで用途があると思います。 今回はそれをCakePHP 1.2系のシェル機能を使って実現してみました。(1.2.0.6311-betaで確認) 使用するもの メールサーバはqmail、メールの解析処理はPEARのMail_mimeDecodeを使用します。 PEARを使用できるようにセットアップ まずapp/vendorsの下にPEARフォルダを作り、PEARのコアクラス(PEAR.php)とMail_Mimeパッケージのクラスを置く。 次に、以下のソースをapp/vendors/pear_ini.phpとして保存。 <?php define('PEAR_PATH', dirname(__FILE__) . DS . 'PEAR'); set_inclu

    メール受信からのシェル機能実行 - Writing Some Code
    kno
    kno 2010/10/01
  • recursiveで悩むな、Containableを使え | へびにっき

    CakePHPのModelが備える recursive 機能は分かりにくい上に効率が悪い。代わりにContainableビヘイビアを使うべき。今後新たに作り始めるならAppModelに次のように書いても良いくらい。 class AppModel extends Model { var $recursive = -1; var $actsAs = array('Containable'); } このビヘイビアは、一言で言えば ActiveRecord(Rails) の include オプションのようなもの。一度の find で取得する関連を明示的かつ再帰的に指定することができる。 /* Group hasMany User User hasOne Profile */ $rows = $this->Group->find('all', array('contain' => array('U

    kno
    kno 2010/09/15
    ”Containableを使った方が絶対に良い。”えっ