タグ

CakePHPに関するsatoshieのブックマーク (45)

  • フォームヘルパーが生成するHTMLをカスタマイズする | テクフリ

    テンプレートの作成 新しいテンプレートを「config」ディレクトリにfileName.phpとして作成する。このfileName.phpに、適用したいコードを追加していく。fileName.phpに記載されなかったものはデフォルトで設定されているものが適用される。 <?php return [ 'inputContainer' => '{{content}}', 'label' => '', 'input' => '<input type="{{type}}" name="{{name}}"{{attrs}} class="form-control">', 'radioWrapper' => '{{input}}', ]; デフォルトで設定されているもの 'templates' => [ 'button' => '<button{{attrs}}>{{text}}</button>',

    フォームヘルパーが生成するHTMLをカスタマイズする | テクフリ
  • CakePHP FormHelperの使い方

    FormHelper使用時の覚え書き。チェックボックスとかラジオボタンに属性を付けたりするのが厄介だったので。 FormHelperはForm->create()からForm->end()の中にコントロールを記述します。 <?= $this->Form->create(null, [ 'url' => ['action' => 'execute'], 'type' => 'post', ]); ?> <?= $this->Form->end() ?> 日付選択コントロール 日付選択用に専用の部品が用意されています。便利ですね。 <?= $this->Form->date('first-date', [ 'minYear' => 2017, // 年選択の最小の年. 'maxYear' => 2025, // 年選択の最大の年. 'monthNames' => false, // 月を数字で

    CakePHP FormHelperの使い方
  • cakephpのtestをもっとやりやすく - もがき系プログラマの日常

    はじめに こんばんは。 簡単な記事ですが、今回やった対応をブログにします。 現在cakephp3の案件をお手伝いしています。 今回はcakephpで使用する testとfixtureについてです。 cakephpのfixtureファイルは以下のような感じで、table構造と テストデータを一緒に記述できます。 <?php namespace App\Test\Fixture; use Cake\TestSuite\Fixture\TestFixture; class UsersFixture extends TestFixture { public $import = ['table' => 'users']; public $records = [ [ 'id' => 1, 'name' => 'kojirock', 'email' => 'kojikoji@example.com',

    cakephpのtestをもっとやりやすく - もがき系プログラマの日常
  • テストデータを簡単に作る方法 - Qiita

    CakePHP Advent Calendar 2017の16日目です。 @keisukefunatsu さんの昨日の記事は、codeceptionをcakephp3で扱ってみるチュートリアルでした。 CakePHPで自動テストを書いていますか? ちょうど1週間前に9日目の記事として、CakePHP3 のアプリケーションを Behat でテストする(update編)を書きました。これはE2Eですが、もちろんPHPUnit(など)を使った単体テストもあるでしょう。 CakePHPではfixtureという仕組みを使ってテストデータを作成できるようになっています。 この記事は、テストをするには避けては通れないテストデータについて、以下のような悩みを持っている方を対象とした内容になります。 fixture にテストデータを書くのが面倒 DBにカラムを追加したときに fixture を書き換えるのが

    テストデータを簡単に作る方法 - Qiita
  • CakePHPで知ってると便利なコードまとめ - Qiita

    よく使うものをまとめています。随時更新。 ※最新版では変更になっている場合があります。 CakePHP:ver3.7.6 PHP:7.2.3 Cookbook https://book.cakephp.org/3/ja/ 4.x版はこちら https://qiita.com/egcmrsk/items/09417521c7f0ac5f210f Controller リクエスト 現在のルートを取得 $this->request->getParam(); // controller $this->request->getParam('controller'); // action $this->request->getParam('action'); // prefix $this->request->getParam('prefix');

    CakePHPで知ってると便利なコードまとめ - Qiita
  • モデルのないフォーム - 3.10

    モデルのないフォーム¶ class Cake\Form\Form¶ ほとんどの場合、フォームの背後には ORM エンティティー や ORM テーブル あるいはその他の永続的ストアーがありますが、 時にはユーザー入力を検証し、そのデータが有効であれば何らかのアクションを実行する、 という場合もあります。この最も一般的な例は問い合わせフォームです。 フォームの作成¶ 一般的に Form クラスを使う時は、フォームを定義するためにサブクラスを使います。 これはテストを簡単にし、フォームを再利用できるようにします。 フォームは src/Form に置かれ、普通はクラスのサフィックスして Form を持ちます。 たとえば、単純な問い合わせフォームは次のようになります。 // src/Form/ContactForm.php の中で namespace App\Form; use Cake\Form\

  • バリデーション - 3.10

    $validator ->requirePresence('title') ->notEmpty('title', 'このフィールドに入力してください') ->add('title', [ 'length' => [ 'rule' => ['minLength', 10], 'message' => 'タイトルは 10 文字以上必要です', ] ]) ->allowEmpty('published') ->add('published', 'boolean', [ 'rule' => 'boolean' ]) ->requirePresence('body') ->add('body', 'length', [ 'rule' => ['minLength', 50], 'message' => '記事は中身のある文を持っていなければなりません。', ]); 上記例に見られるように、バリデ

  • CakePhp3のComponentの作り方まとめ - Qiita

    Componentの生成 プロジェクトのbinフォルダに移動し、以下のコマンドを実行。 cake bake component コンポーネント名 ここで、cake bake component TestComponentのように、Componentという単語を含めると精製されるファイルがTestComponentComponentとなってしまうので、cake bake component TestのようにComponentの前の部分だけを指定する。 初期処理 Componentが生成される時に、initializeメソッドが呼ばれる。 initializeメソッドは配列1つを引数に取る(Component読み込み時の引数が入る)。

    CakePhp3のComponentの作り方まとめ - Qiita
  • cakePHP3のQueue Pluginを使ってみる - Qiita

    初、Advent Calendarです。よろしくお願いします(^o^) この記事は、CakePHP 3 Advent Calendar 201513日目用に書きました。 Queue Pluginって? イケメンのMark S.さんが作ってくれている、CakePHP Queue Pluginのことです。 DBにTaskを追加して、Queue用のworkerを動かしておくと、定期的にTaskを実行してくれます。 なぜ、Queue Pluginを使ったか スクレイピングでデータを貯めて、それを参照するWebアプリを作っています。 定期的にスクレイピングしてデータを貯めていますが、それが追いつかない時に、追加でスクレイピングしてくれる仕組みがあると良いなと考え、調べた結果、Queue Pluginを使ってみることにしました。 ※スクレイピングの実行間隔を狭めれば良いんじゃないかとか思いましたが、ま

    cakePHP3のQueue Pluginを使ってみる - Qiita
  • CakePHPのアソシエーションがわからなくなったとき用 - Qiita

    http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html http://blog.ecworks.jp/archives/268 http://qiita.com/kazu56/items/eaaa0c2d7294a28ac21c http://qiita.com/moriyant/items/b57ee4fc45af2fc03194 hasとbelongが、すぐどっちがどっちかわからなくなる。 「持っている」とかアバウトな言葉じゃなくてテーブル定義で教えてくれ。 結論 hasMany 相手テーブルに、自分テーブル.idへの外部キーがある。 hasOne hasManyだけど外部キーがUNIQUE。 belongsTo 自分のテーブルに、相手テーブル.idの外部キーがある。 hasAndB

    CakePHPのアソシエーションがわからなくなったとき用 - Qiita
  • cakephp3における日付のバリデーション - Qiita

    今回やりたいこと postされてくる日付を、現在の日付(今日)より、前であればvalidationを有効にしたい 基 app/src/Model/Table/HogeTable.php POST入力値等の入力値チェックは validationDefault に記述する saveの入力値チェック(Entityチェック)は buildRules に記述する cakephp3のバリデーションは2パターン存在 思考の流れ 自分で考えたbadコードを、プレビューしていただき、 より良いコードになった流れです。 public function validationDefault(Validator $validator) bakeにより、デフォで設定されているのが、 下記の初期段階です。 ※hoge_date は、postされてくるinputのラベル名になります。 $validator ->date

    cakephp3における日付のバリデーション - Qiita
  • CakePHP3.5以降の設定情報の切り替えで .env を使うべきか app_local.php を使うべきか – クーディップ株式会社(Coodip, Inc.)

    先日開催された CakePHP Meetup イベントにて、.env と app_local.php に対する話題がでました。これらは環境ごとに異なる値を管理するために利用されるものですが、どちらを使えばいいのか明確な基準がなく、なんとなくでイベントは話題が流れていきました。後から気になって色々調べたので、こちらにご紹介します。 先に結論ですが、プロジェクトによってどちらかを選べばよく、特に理由がなければ app_local.php を利用した方がいいという感じでした。明確に片一方が素晴らしいということはありませんでした。 .env の使い方 こちらは環境変数に値をセットする方式で、その値にアクセスするには env() 関数を利用します。例えばDB の設定情報は以下のように記述します。 # .env export DATABASE_HOST="production.database.hos

  • CakePHP3でアソシエーションごとsaveする - Qiita

    想定としては、一つの注文(Orders)に複数の商品(Items)が紐付いているようなデータ。 一つの登録画面で注文テーブルに保存する内容と注文明細テーブルに保存する内容を両方入力させてそのまままとめて保存したい。 モデル。 OrdersTable.php のイニシャライズのところにhasmany追加。 public function initialize(array $config) { $this->hasMany('Items', [ 'foreignKey' => 'order_id' ]); }

    CakePHP3でアソシエーションごとsaveする - Qiita
  • CakePHPを使った実装で悩んだときに見ている情報源 - コネヒト開発者ブログ

    こんにちは! @fortkle です。 この記事は コネヒト Advent Calendar 2020 8日目 の記事です。 https://cakephp.org/jp はじめに コネヒトではサーバーサイドの言語として主にPHP、フレームワークでいうとCakePHPが採用されています。 公式のドキュメントにもある通り、CakePHPは「設定より規約」的な思想が随所に感じられるフレームワークです。 私たちは「設定より規約」(convention over configuration) という考え方に賛成です。 CakePHP の規約を習得するには少し時間がかかりますが、長い目で見ると時間を節約していることになります。 規約に従うと自由に使える機能が増えますし、設定ファイルを調べまわってメンテナンスするという悪夢からも 開放されます。 規約によって開発が統一感を持つため、開発者が加わってすぐ

    CakePHPを使った実装で悩んだときに見ている情報源 - コネヒト開発者ブログ
  • CakePHP入門(4) 〜バリデーション〜  - Qiita

    <?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 ->

    CakePHP入門(4) 〜バリデーション〜  - Qiita
  • デザインがリニューアルされたCakePHP3でbakeしよう! - Qiita

    デザインがリニューアルされたCakePHP3.0でbakeしよう! 前提条件 CakePHP 3.0 をインストール済みであること ○参考 CakePHP 3.0 インストール 実際にbakeを行う 実際にbakeを行います。 注意点は、Cake2系とはコンソールの設置場所が変更されていて、binディレクトリの下になります。 また、bakeの実行方法もパラメーターで指定するように変更されています。 php bin/cake.php bake controller Users php bin/cake.php bake model Users php bin/cake.php bake template Users // controller, model, templateを一括で作成するallもあります。 php bin/cake.php bake all users

    デザインがリニューアルされたCakePHP3でbakeしよう! - Qiita
  • CakePHP3のcontainを操る - Qiita

    CakePHP3でデータベースを引くときに、他のテーブルを取り込めるcontainという機能があります。単にデータを取ってくるだけでなく、更に細かい制御も行えます。 containの必要性 CakePHP3ではモデルクラスもTableとEntityに分かれたことで、1レコードがEntityオブジェクトとなったのですが、その結果発生しうるのがN+1問題です。Entityの中から関連づいたテーブルを参照しようとすると、それぞれのEntityごとにクエリが飛ぶため、クエリの数が膨れ上がってしまうのです。 これを防ぐために、データベースから関連するレコードを一気に引いてしまう、という手法があって、以下のどちらかで実装されています。 関連する別テーブルとJOINすることで、まとめてデータを引く 関連付けするキーを使って別のテーブルを引いて、あとから合成する CakePHP3で、このような「まとめて引

    CakePHP3のcontainを操る - Qiita
  • CakePHP3のEntityのaccessibleでハマった話 - Qiita

    CakePHP3にはEntityに$_accessibleプロパティというものがあります。 http://book.cakephp.org/3.0/ja/orm/entities.html#mass-assignment ↓Bakeするとよく見るコレです。 この状態だとidは変更不可、それ以外は変更可ということになり、Save時のEntityのプロパティに値をセットしたとしても保存されません。 これを利用して、今回ある項目はinputフォームにはreadonlyを付けてPOSTされるけど保存されない、というような実装を行いました。 という前提を元に今回ハマった点について話します。 ハマった問題 リレーションを貼った先のEntityに想定したaccessible設定しているのに保存されない! 構成 テーブル関係 企業情報テーブルとそれに紐づく口座情報を格納する2つのテーブルがあり、hasma

    CakePHP3のEntityのaccessibleでハマった話 - Qiita
  • コネヒトマルシェオンライン「事業を支えるWeb開発」vol.2 を開催しました! - コネヒト開発者ブログ

    こんにちは! @otukutun です。 先日 2020/09/25(金)に コネヒトマルシェオンライン「事業を支えるWeb開発」vol.2 をランサーズさんと共同開催で開催しました!コネヒトマルシェはみんなの「知りたい」「知ってる」をおすそ分け!をコンセプトにした参加者が主役の勉強会です。今回はオンライン開催になってから第二回目になります。前回はBASEさんとこんな内容でやっておりますのでそちらもよかったらご覧ください。 発表内容 今回はオンラインになってから第二回の開催となりますが、テーマは第一回に引き続き「事業を支えるWeb開発」というテーマでお送りしました。今回の発表内容は以下のようになっています。ではさっそく、これからLTの内容など簡単にご紹介できればと思います。 @奥津(コネヒト株式会社所属) Fabricate導入した話 @金澤さん(ランサーズ株式会社所属)ランサーズのCak

    コネヒトマルシェオンライン「事業を支えるWeb開発」vol.2 を開催しました! - コネヒト開発者ブログ
  • 【CakePHP3】特定レコードのsave()だけ失敗する時はsaveOrFail()を使ってみよう | Masyus Work

    CakePHP3で作ったバッチがどういうわけかよくsave()で失敗してて、しかもExceptionすら吐かずにfalseだけ返すものだから 「一体原因は何なんだろ?」 って思うことがしょっちゅうあったので、その解決策を書いておく。検証したCakePHPのバージョンは3.6.13。 save()がよく失敗する時はsaveOrFail()を使うようにしよう save()で失敗してfalseが返ってくる場合、実際にはExceptionを吐く条件が満たされていることが多い。個人的な体験談としては、save()しようとしたEntityに該当するTableにbuildRules()が設定されていて、外部キールールに引っかかって実際にはExceptionを吐く条件を満たしていたことがあった。 例えば、保存しようとするEntityに該当するTableに、buildRules()として

    【CakePHP3】特定レコードのsave()だけ失敗する時はsaveOrFail()を使ってみよう | Masyus Work