2017.9.19システム開発 インソースマーケティングデザイン 2021年8月1日「マリンロード」は「インソースマーケティングデザイン」へ社名を変更いたしました [CakePHP] CakePHPのHashクラスが配列をあれこれするのに便利すぎた こんにちは。エンジニアの高田です。 きっと知っている方からすれば今さら感満載なんでしょうけど、私最近知りました。 CakePHPの「Hashクラス」。 CakePHPといえば、配列祭りワッショイです。 その配列を便利な形に組み替えたり、抽出したりできるのがCakePHPの「Hashクラス」です。 まずは、Hashクラスとは。。。 CakePHPに用意されている配列を扱うための便利なツールです。 ▽CakePHP Cookbookより https://book.cakephp.org/2.0/ja/core-utility-libraries/h
![[CakePHP] CakePHPのHashクラスが配列をあれこれするのに便利すぎた | インソースマーケティングデザイン | ホームページ制作・リニューアル・運用改善で課題を解決](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fd96c8f2a78220ceecc7bd0f1eb8753d26e1203bb%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Finsource-mkd.co.jp%252Fwp_corp%252Fwp-content%252Fuploads%252F2021%252F08%252Flogo_back_wh.png&f=jpg&w=240)
CakePHPといえば array です。一挙手一投足にarrayがつきまとう、そんなCakePHPには、複雑な array を簡単に扱うために用意された Hash というユーティリティクラスがあります。 Hashクラスはこんな方々に有効です キーの存在確認のために array_key_exists() や isset() を多用している find した結果の array を望ましい形にするために、 foreach を回している アソシエーションされたデータを取り出すために、 2重3重で foreach を回している 気がつけばいつも foreach を回している サンプルデータ $results = array( 0 => array( 'Book' => array( 'title' => 'ハッカーと画家', 'auther' => 'Paul Graham', 'Category'
スマートフォンアプリのバックエンドや、JSフレームワークのバックエンドとして、JSONやXMLを返すAPIをサーバサイドで実装する機会は多いと思います。 今回は、ComposerとCakePHP2.4、FriendsOfCake/crudを使って爆速で実装してみます。 できあがりは、これ slywalker/cakephp-app-api_sample CakePHPのインストール まず、プロジェクトのディレクトリにcomposer.jsonをつくります composer.json { "require": { "pear-cakephp/cakephp": "2.4.*" }, "config": { "vendor-dir": "Vendor/" }, "repositories": [ { "type": "pear", "url": "http://pear.cakephp.org

BUILD 1200% FASTER. We're notjust the best CakePHP developers. We’re the experts behindit. CakeDC Upgrade Services Upgrade your project to CakePHP 4 Our team is offering a full upgrade from CakePHP 2/3 to CakePHP 4. This will be a migration of your current application code to makeit compatible with CakePHP 4 features, plugins,security settings,etc. We will be doing these migration services fo
この記事を三行にまとめると ここらで一覧を作っとこうと思います 既存の記事に対応させるのもめんど……大変だし どうせならもっと別のことを頑張りたいですね ちょっと「CakePHP3を触ってみました」シリーズの記事が増えて来たので、ここらで一覧を作っとこうと思います。 今後、同シリーズの記事が増えたら、ここに足して行きます。各記事にのもこのページへのリンクを貼っておくんで、よろしくどうぞ。 composerって何やねん composerを使ってCakePHP3をインストールしたことについて書いてます。 やはりwebrootは切り出そう webrootの下にあるindex.phpやらcssやjsを別の場所に移すやり方です。 パスワードのハッシュ化はどうやるんだ? パスワードのハッシュ化や、ハッシュ化されたパスワードのチェックについてです。 あれ、updatedは? データを登録するときのcre

こんにちは!フリーエンジニアのせきです。 CakePHPには、データベースのテーブルに合わせてModel、Template、Controllerの雛形を自動生成してくれるbakeという便利な機能があります。 この記事では、 ・bakeとは何か知りたい ・bakeの使い方を知りたい という基本的な内容から、 ・コードを一括作成する方法を知りたい といった応用的な内容に関しても解説していきます。 今回はそんなbakeの使い方について、わかりやすく解説します! bakeとは bakeとは、CakePHPのMVCモデルによるWebアプリケーションの雛形を自動生成するための機能です。 MVCモデルとはWebアプリケーションのデザインパターンで、アプリケーションを以下の3つの役割に分割します。 Model アプリケーションのデータとビジネスロジックを持つ View ユーザインターフェイスを生成する C

Helper 編 まずは気軽に試せれる便利なTemplate 側の機能になります。CakePHP 3 系では、sec/Template ディレクトリ内にHtml に関するファイルを作成します。そのファイル内で CakePHP 標準の便利なヘルパーを利用します。 POST ボタン、POST リンク 見た目はただのボタンやリンクなんだけど、実際には form の POST で値を送りたいなんて要求に応えた機能です。標準の Form ヘルパーには 1 行で POST 送信させるボタンやリンクを書くことができます。 公式マニュアル POST ボタンの場合 下記の一行を書くだけで以下の見た目のボタンが作成できます。 <?= $this->Form->postButton('削除する', ['controller' => 'Articles', 'action' => 'delete', 'id'
CakePHP3はDBスキーマの更新管理にPhinxを採用していますが、ドキュメントが少ない…。 ということで、Migrationファイルの例を書こうと思います。 一応参考: Cookbook 3.x - Migrations Phinx - Writing Migrations テーブルの追加 change()に書ける $table = $this->table('table_name'); $table->addColumn('name', 'string') ->addColumn('description', 'text') ->addColumn('created', 'datetime') ->addColumn('modified', 'datetime') ->create();

CakePHP3のMVCの話をするので、フレームワークによっては少し違う部分があるかもしれません。 MVCの流れと開発時の作成手順 まずはMVCの処理の流れを確認しましょう。 ブラウザからリクエストが発生し、ブラウザに返すまでの動きが以下の図で表せます。 ブラウザからコントローラーとアクションを指名され、アクションが実行される。 アクション内でモデルが指定されていればモデルが実行される。 アクションの処理が終了したら、Templateフォルダ¥コントローラーと同名のフォルダ¥アクション名と同名のctpファイルを表示対象として生成する。 ブラウザに返す。 この流れを踏まえると、以下の順で作成を進めることをお勧めします。 Controllerとaction(とりあえずアクションの枠だけ) View(Template) Controllerのaction内の処理 必要になったときにModel内各

前回の記事、『CakePHP サニタイズでエスケープされた改行コードを元に戻す簡単なコンポーネントを作ってみる』で簡単なコンポーネントを作成したのですが、色々考えた結果「データの加工などの処理はモデルで行うべきだ」との考えに至ったので、前回作成したコンポーネントと同じ処理をするビヘイビアを作成してみたいと思います。 作成するビヘイビアのメソッドとしては、『サニタイズでエスケープされた改行コードを元に戻す』『HTMLエンティティを特殊文字に置き換える』です。 ビヘイビアは、『ModelBehavior』クラスを継承して作成します。 ▼『ModelBehavior』クラスを継承 classHtmlDecodeBehavior extends ModelBehavior { public $name = 'HtmlDecode'; } CakePHPの命名規則に則り、『/app/models/
W 杯に向けて CS 放送契約しました!nakamura です。でもケーブルテレビだと、まだあまりフルハイビジョン対応していないんですねぇ、、、 今回は CakePHP 連載の 2 回目、第 1 回の Component に続いて Behavior のお話しをします。データアクセス周りで共通して使う機能を 1 箇所にまとめたい場合 Behavior はうってつけの方法です。まだ、あまりうまく使えていない方、ぜひ参考にしてみてください! Behavior って? Controller でいう Component と同様の役割を Model に対して提供します。特定のモデルに依存しない汎用的な機能を記述する事で、どのモデルからでも同じようにその機能にアクセスする事が可能になります。 設置場所 app/models/behaviors 以下に設置します。命名規則命名規則も基本的には Comp
<?php namespace App\Model\Table; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; class UsersTable extends Table { public function initialize(array $config) { parent::initialize($config); $this->setTable('users'); $this->setDisplayField('username'); $this->setPrimaryKey('id'); } public function validationDefault(Validator $validator) { $validator ->

Inflect me! Running on CakePHP 3.5.10
早いもので CakePHP3 がリリースされてから半年以上が経過しました。 革新的な人は、一足先に CakePHP3 の世界に飛び込んで、時には躓きながらも、すでに多くのノウハウを蓄積していることでしょう。保守的な人は、あるいはいまだに CakePHP1 の世界に留まっているかもしれませんね。 あなたが中庸な人であれば、CakePHP2 の世界に居ながらも、ためらいがちに新しい扉の向こう側を覗いているかもしれません――私のように。 今回、ご紹介する StackableFinder は、そんなあなたにぴったりのプラグインで、CakePHP3 の新機能 QueryBuilder の CakePHP2 における実装です。CakePHP2 のソースコードに目を通していた折りに、同機能をほんの少しのコード量で実装できることに気付いて、早速作成してみました。 この記事では Cookbook 3.x

カスタムファインダーとは カスタムファインダー とは Model が提供するファインダーの中で find('all') でも find('first') でも find('list') でも find('count') でも find('threaded') でも find('neighbors') でもない独自のファインダーのことです。 たとえば、データベース中から有効なユーザーのみを取得したいとします。こうした場合にカスタムファインダーを活用することができます。頻繁に使用する検索条件であればコードの重複を削減できますし、そうではなくて、あるアクション固有の処理だったとしても CakePHP ではコントローラーをスリムにしてモデルを太らせるのが鉄則 1 です。 カスタムファインダーを作成する では、さっそくカスタムファインダーを作ってみましょう。有効なユーザーのみを取得する find('
![[CakePHP2] カスタムファインダーの使い方と利便性 - Qiita](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f42c15c3d961fe38205ba172795a0f0e693eab126%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fqiita-user-contents.imgix.net%25252Fhttps%2525253A%2525252F%2525252Fcdn.qiita.com%2525252Fassets%2525252Fpublic%2525252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%25253Fixlib%25253Drb-4.0.0%252526w%25253D1200%252526blend64%25253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMTA3MTE4JTJGcHJvZmlsZS1pbWFnZXMlMkYxNDczNzEwMTM5P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZiZz1GRkZGRkYmZm09cG5nMzImcz04NjdlOTUyM2Q2MzYzNzVlMTVjN2EwNjlmNjI3NWY4Yw%252526blend-x%25253D120%252526blend-y%25253D467%252526blend-w%25253D82%252526blend-h%25253D82%252526blend-mode%25253Dnormal%252526s%25253D11b15d3196bb36e401dbc90214a92c23%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526fm%253Djpg%2526mark64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCQ2FrZVBIUDIlNUQlMjAlRTMlODIlQUIlRTMlODIlQjklRTMlODIlQkYlRTMlODMlQTAlRTMlODMlOTUlRTMlODIlQTElRTMlODIlQTQlRTMlODMlQjMlRTMlODMlODAlRTMlODMlQkMlRTMlODElQUUlRTQlQkQlQkYlRTMlODElODQlRTYlOTYlQjklRTMlODElQTglRTUlODglQTklRTQlQkUlQkYlRTYlODAlQTcmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz01ZGI1NTEzMTA4ZDQwMDk5MjIyZGVlZTFmMjMzYWM2OQ%2526mark-x%253D120%2526mark-y%253D112%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBjaGlucGVpMjE1JnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NDM0M2UxNmNmN2VlNTA1YThhNDU3NGFhOThmYzNkY2U%2526blend-x%253D242%2526blend-y%253D480%2526blend-w%253D838%2526blend-h%253D46%2526blend-fit%253Dcrop%2526blend-crop%253Dleft%25252Cbottom%2526blend-mode%253Dnormal%2526s%253Dfa3590a9d6e4ffd9c86dc784e164eb7b&f=jpg&w=240)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く