cakephp3
動かない書き方 $city = "Tokyo"; $query->andWhere("MATCH (users.city) AGAINST('+\":city1\" IN BOOLEAN MODE')") ->bind(':city1',$city); このエラーが出る: Invalid parameter number: number of bound variables does not match number of tokens 正…
./cake bake -c データソース名
諸々の事情で、既存のソースを多言語対応することになりました。 いろんな箇所に echo "こんにちは" といった具合に辞書を参照しない形でテキストが埋め込まれています。 これを echo __('こんにちは'); に変更したいのだけど、手で書いていたら日が暮れてし…
Macにswagger-codegenをインストールする 注意:brew install swagger-codegenだと、3系のswagger-codegenがインストールされますが、 そいつが生成するPHPコードは壊れてます。よって、2系をお使いください。 brew cask install homebrew/cask-versions/jav…
cake bake migration_diffでマイグレーションファイルを作ってから「名前変えたい」ということってありませんか? 僕は次の方法で変えました: マイグレーションを適用前の状態にする cake migrations rollback マイグレーションファイルをリネームする cd c…
メソッド 関連するデータを取得するか? 関連するデータに対して条件を設定し、元のテーブルを絞り込めるか? contain ○ ☓ matching ○ ○ innerJoinWith ☓ ○ 注意事項:containとmatchingは排他利用ではない
リクエストデータを変更する場合 $data = $this->request->getData(); $data['order_data']['name'] = "新しい名前"; $order = $this->Orders->patchEntity($order, $data); エンティティのプロパティを変更する場合 $order->order_data->name = "新しい名前…
debugkitを入れていればSQLは確認できますが、リダイレクト等が入っていて確認できない場合があります。 その対策です。 bootstrap.phpの変更 bootstrap.phpにこれを追加します: Log::config('queries', [ 'className' => 'File', 'path' => LOGS, 'file' =…
EXIFにオリエンテーション(回転)が設定されている画像をアップロードすると、Chromeはそのオリエンテーションを尊重して表示します。 これを回避するためにこんなコンポーネントを作りました: class FixOrientationComponent extends Component { public …
jQuery等のライブラリをレイアウトファイルで読み込ませ、その他のJavaScriptファイルはテンプレート側で必要に応じて読み込む方法をどうやったらよいか、 前から悩んでいたのですが、以下、動く方法が1つ見つかりました。 レイアウトファイルの一部 append(…
結構ハマりました。結論からいうと、AllowOverrideの設定をhttpd.confで正しく設定しているか確認してください。
これ、Authの設定でやる方法をご存知の方がいましたら教えてください… 私はUsersController.phpのloginで次のようにしています: if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { if($user['user_status_id'] == USER_STA…
まず、AppController.phpに次を追加します: use Cake\I18n\Middleware\LocaleSelectorMiddleware; public function middleware($middleware) { $middleware->add(new LocaleSelectorMiddleware(['en_US', 'ja_JP'])); } 次にbootstrap.phpにこちらを: use …
開発環境をEC2に移したところ、debugKitが表示されないという怪現象が。 debug.logをみたところ: 2018-05-14 13:46:16 Warning: DebugKit is disabling itself as your host `ホスト名` is not in the known safe list of top-level-domains (localhost,dev…
bakeコマンドでマイグレーションファイルを作成すると、次のような内容が生成されます: $this->table('statuses') ->addColumn('id', 'tinyinteger', [ 'default' => null, 'limit' => 3, 'null' => false, ]) ->addPrimaryKey(['id']) ->addColumn('name',…
今回は、こちらを利用しました: github.com PHP7.03以上とGDが必要です。 インストール composer require chillerlan/php-qrcode 僕の場合はこれで2.0.6が入りました GDのインストール iusを使っているので、以下でインストール: sudo yum install php72u-…
これまでは、find()を使っていたのですが、もっと簡単な方法が! if ( $this->Users->exists(['email' => $email]) ){ } といった具合にチェックできます。
VirtualBoxで仮想マシンを幾つか立ち上げてプログラムを書いていたところ、画面が真っ白であったり、 ERR_CONTENT_LENGTH_MISMATCHであったりのエラーが。 どうやらメモリ不足のようで、パソコンを再起動+仮想マシンの数を絞ったら治りました。
結論からいうと、URLヘルパーもしくはRouterの第2引数をtrueに設定します: URLヘルパーの場合: $url = $this->Url->build(["controller" => "Posts", "action" => "search", "?" => ["foo" => "bar"] ],true); ルータの場合: use Cake\Routing\Router; //…
保存をしても、次のエラーが出ることがあります: [RuntimeException] Cannot insert row, some of the primary key values are missing. Got (, ), expecting (task_id, user_id) この場合は該当するEntityを確認し、カラムがaccessibleに含まれているか確…
まだ使い始めて日が浅いですが、ComponentとかHelperのようにいろいろな場所から呼び出しが多いコードは、 必ずdeclare(strict_types=1);を設定し、かつ、関数の引数と戻り値の型を設定しておくと効率がいい気がします。 あとから設定するのは面倒なので、最…
データベースにセッションを格納している場合、session.dataカラムにタイムアウト時刻らしく文字が入ります: Config|a:1:{s:4:"time";i:1524284504;} この値を読みたい場合にどうするか? session_start(); session_decode($data); print_r($_SESSION); と…
もし、デフォルトのレイアウト(default.ctp)を使っている場合はレイアウトにこの記述があります: fetch('script') ?> 便利なことに、ここにスクリプトを動的に追加できます: Html->script('filename', ['block' => 'script']); ?> これでfilename.jsが読…
これはしびれました: stackoverflow.com $validator ->add('current_password','custom',[ 'rule'=> function($value, $context){ $user = $this->get($context['data']['id']); if ($user) { if ((new DefaultPasswordHasher)->check($value, $user->passw…
Localeディレクトリのパーミッション ロケールの設定(config/app.phpの'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), キャッシュの削除
Usersテーブルをbakeすると、emailのバリデーションは次のように自動生成されます: $validator ->email('email') バリデーションに失敗した場合はThe provided value is invalidと出ます。 これを変更するときに $validator ->email('email','メールの形式…
beforeSaveの場合 public function beforeSave($event, $entity, $options) { // 何らかの処理 return true; } saveの第2引数を指定します: if ($this->Users->save($user, ['key' => 'value'])) { 参考URL: https://api.cakephp.org/3.6/class-Cake.ORM.Ta…
usersテーブルを作り、./cake bake all usersと実行するとadd/edit/view/index.ctpが生成されます。 しかし先日、何かのきっかけでlogin.ctpが生成されるのを目撃してしまいました。 login.ctpを作るのは難しくないですがなぜ、生成されるときとそうでないと…
*isUnique $validator ->email('email') ->requirePresence('email', 'create') ->notEmpty('email') ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); 上記と、 $rules->add($rules->isUnique(['email'])) はなぜ両方必要…
みなさん、Seedファイルの読み込みどうしていますか? 僕はこんな感じで: cd /var/www/html/app/bin for i in `basename -s .php -a ../config/Seeds/*` do ./cake migrations seed --seed ${i} done 楽ですが、シードファイル間で依存があるとダメなんです…