2018-01-01から1年間の記事一覧

CakePHP3:default.poが読み込まれない・更新されない場合の確認ポイント

Localeディレクトリのパーミッション ロケールの設定(config/app.phpの'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), キャッシュの削除

CakePHP3:メールアドレスのバリデーションエラーのメッセージを変更する

Usersテーブルをbakeすると、emailのバリデーションは次のように自動生成されます: $validator ->email('email') バリデーションに失敗した場合はThe provided value is invalidと出ます。 これを変更するときに $validator ->email('email','メールの形式…

CakePHP3:beforeSaveとbeforeFindにオプションを渡す

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…

CakePHP3:login.ctpをbakeする

usersテーブルを作り、./cake bake all usersと実行するとadd/edit/view/index.ctpが生成されます。 しかし先日、何かのきっかけでlogin.ctpが生成されるのを目撃してしまいました。 login.ctpを作るのは難しくないですがなぜ、生成されるときとそうでないと…

CakePHP3:要調査

*isUnique $validator ->email('email') ->requirePresence('email', 'create') ->notEmpty('email') ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); 上記と、 $rules->add($rules->isUnique(['email'])) はなぜ両方必要…

CakePHP3:Seedファイルを読み込む

みなさん、Seedファイルの読み込みどうしていますか? 僕はこんな感じで: cd /var/www/html/app/bin for i in `basename -s .php -a ../config/Seeds/*` do ./cake migrations seed --seed ${i} done 楽ですが、シードファイル間で依存があるとダメなんです…

CakePHP3:friendsofcakeプラグインでラジオボタンを横並びにする

めっちゃ簡単で、inline=trueを指定するだけです: echo $this->Form->control('priority_id', ['options' => $priorities, 'type' => 'radio', 'inline' => true]);

CakePHP3:3.5移行の際のポイント

マイナーチェンジのようで、結構大きな変更があるので以下にまとめています(随時更新) インストール 3.4の場合は、 composer create-project --prefer-dist cakephp/app:3.4.* app と指定したところ、3.4.2が入りました。 3.5の場合は、 composer create-p…

CakePHP3/Bootstrap3:フォームのラベルを左寄せする

Friendsofcakeのbootstrapプラグインを導入すると、 echo $this->Form->control('title'); といった記述をするだけで次のマークアップを吐いてくれます: <div class="form-group text required"> <label class="control-label text-left col-sm-2 col-md-2" for="title">Title</label> <div class="col-sm-6 col-md-6"> </div></div>

CakePHP3:findで特定の行の特定のカラムの値を取得する

$firstname = $this->Users->find()->where(['id' => $user_id])->first()->firstname; もっと美しいやり方をご存知でしたら教えてください〜 関連エントリ: thebaker.hatenablog.com

jQuery:Firefoxでsubmit()してもフォームがサブミットされない

原因はいろいろあるようですが、僕の場合はこのように変更する必要がありました: 変更前 <button type="submit" id="post-button">送信</button> 変更後 <button type="button" id="post-button">送信</button> Firefox以外は変更前でも動くのですが…(IE11, Edge, Safari, Chrome)

metisMenu:画面遷移の際、第2階層が全部展開するのを防ぐ

第2階層のclassにcollapseを追加すれば回避できます: <ul class='nav nav-second-level collapse'></ul>

Git:既に存在しているソースをgitで管理する

bitbucketの場合 git init git remote add origin git@bitbucket.org:username/repository.git git add . git commit -m "first commit" git push origin master githubの場合は2行目がgit remote add origin git@github.com:username/repository.gitになる

CakePHP3:複数単語のprefixを使う

これまでprefixルーティングではadminくらいしか使ったことなかったのですが、ふと、 adminFeaturesとか複数の単語を使った場合はどうなるんだろう?と思っていました。 結論から書くと、こうします: URL: /admin-features/コントローラ/アクション routes.…

CakePHP3:Bootstrap3、jQuery、sb-admin-2の導入

friendsofcakeのbootstrapプラグインを導入してみました。が、美しく無い… プラグインはいくつか有りますが、bake用のテンプレートが欲しかったのでfriendsofcakeにしました。 以下、CakePHPが/var/www/html/appにインストールされている前提です。 bootstra…

CakePHP3:コントローラでCSRF対策とセキュリティコンポーネントをOFFにする

CakePHP3.4ではこう書きます: public function beforeFilter(Event $event) { parent::beforeFilter($event); $this->Auth->allow( ['index'] ); // indexへのアクセスにおいてSecurityコンポーネントをOFFにする $this->Security->config('unlockedActions…

CakePHP3:特定のコントローラをBasic認証の対象外にする

とある開発においてSMSの送信をすることがあり、SMSの事業者からコールバックを受ける必要がでてきました。 開発環境でBASIC認証をかけているので、コールバックを受けるURLだけを開放したい。 だけどCakePHPでは.htaccessによってURLをrewriteしているので…

URI.jsでURLをパースする

URLをパースするの、面倒ですよね。URI.jsが便利なので使いましょう: <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.19.0/URI.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> let uri = new URI(); let functions = ['hostna…</head></html>

CakePHP3:findですべての行の特定カラムの値を抜き出す

いつももやもやするので、備忘録として。仮にこんなデータがあるとします: id name 1 New York 2 Tokyo 3 London そして次のデータを抜き出したいとします: ['New York', 'Tokyo', 'London'] 実行するのはこいつです: $this->loadModel("Cities"); $citie…

HTML5 AudioとWeb Audio APIの違い

実際にやってみて、気づいた点を列挙します。 対応ブラウザ HTML5 AudioはIE11やモバイルを含めて対応しています。 Web Audio APIはIE11で未対応です オーディオファイルのダウンロード HTML5 Audioでは何もしなくても分割ダウンロードが行われます(ブラウ…

Huawei P10 Liteに機種変更しました

auのSHL23を使っているのですが遅いです。Snapdragon 800なのに…そしてAndroid 4.2とOSが古く試験に利用するには不適切なことから機種変更をしました。できればおさいふケータイが使える国産端末がよかったのですが高いのですよね。安い端末だとシャープのSH…

CakePHP3:PagesのURLをルーティングする

Pagesはページをどんどん作れて便利ですがURLが長いですよね/Pages/display/ページ名。 そこでルーティングを使ってこれを短縮します。 書くまでも無いかもしれませんが…routes.phpに次を追加します: $routes->connect('/ページ名', ['controller' => 'Page…

Huawei P10 Liteのカメラ

業務でAndroid端末が必要になって買いました。26000円。 動作はサクサク、ingressもサクサク動きます。 さてカメラをiPhone 6sと比較してみました: 上がiPhone 6s、下がP10 Liteです。 パット見、P10 Liteのほうが綺麗ですよね。 ただ、暗部を見てみるとiPh…

米国の州のSQLデータ

ご自由にご利用ください。country_idは1にしています: INSERT INTO states (id, name, abbrev, country_id,display_order) VALUES (1,'Alabama','AL',1,990); INSERT INTO states (id, name, abbrev, country_id,display_order) VALUES (2,'Alaska','AK',1,…

CakePHP3:URLのマッピング(ルーティング)

仮に、こちらのURLを: /Japan/Posts/view/10 PostsControllerのviewアクションにマッピングしたいとします。 (つまりJapanってのはURLに入っているけど捨てることになります) この場合、routes.phpに次を追加します: $routes->connect('/:country/Posts/…

CakePHP3:モバイル端末を検出する

サーバ側でモバイル端末を識別するニーズがあり、MobileDetectというのを導入してみました: mobiledetect.net 導入方法ですが、composerを使うと簡単です: composer require mobiledetect/mobiledetectlib Cakeの中のプログラムから利用するには、useを使…

jQuery:Cycle2プラグインでスライダーを実現する

Cycle2というとても使いやすい、jQueryのプラグインがあります。 幾つか詰まった点があったのでここで紹介します。 基本的な使い方 まず、jQueryとこのプラグインを読み込みます: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script src="http://malsup.github.com/jquery.cycle2.js"></script> 次に画像タグを以下のように<div>で括ります: <div class="cycle-slideshow"> …</div></div>

WordPress:アクセス数の多いページをサイドバーに表示する

お客様より、アクセス数の多いページをサイドバーに表示したいとの相談があり、調査してみました。 Wordpress Popular Postsというプラグインを使うと、実現できます。 アクセス数を計測する対象を固定ページと投稿の両方、固定ページだけ、投稿だけから選べ…

WordPress:固定ページをカスタマイズする

固定ページに投稿の一覧を差し込みたいな、と思っていてやり方を探っていました。 大きく分けて3つ、やり方があります: 1) page-ID.phpを作成する wp-content/themes/テーマ名のディレクトリに移動すると、page.phpというファイルがあります。 これをコピー…

WordPress:メニューの言語を変更した場合の副作用

WordPress初心者なのですが、メニューの表記を英語にしたいな、と思ってここをいじってみました: すると驚いたことに、TOPページに表示するコンテンツのうち、 一部を抜粋する機能が動かなくなったのです: 本来はこうあるべきです: 対策ですが、サイト全…