一人もくもく会 α verでサービス開始しました。

php

werckerでCakePHP3のカバレッジ

CakePHP3でwerckerのCIを設定している。 カバレッジも表示したいのだが、BitBucketのプライベートリポジトリは無料でカバレッジを表示できるサービスが多分無い。 そのため別途解決策として、 出力したカバレッジhtmlを他の適当にレンタルしているサーバーな…

さくらの共用レンタルで.php.htmlが表示できない

さくらの共用レンタルだと、phpunitで出力したカバレッジファイルなどの.php.htmlという拡張子のファイルにアクセスすると Premature end of script headers というエラーが出る。 必要なフォルダ内の.htaccessで RemoveHandler .php とすると正しく表示でき…

Linux Mint 18でmailtodisk

Linux Mint 18でxamppに入っているmailtodiskと同じことができるようにした。 多分Ubuntu16あたりでも同じだと思う。 詳しくは php - Use of mailtodisk / mailoutput in XAMPP for Linux - Stack Overflow にかかれていることそのままなのだが、例えば下記…

一人もくもく会というサービスを作成

一人もくもく会というサービスを作成して公開した。 mokumoku.alphabrend.com 概要 世の中誰でも夜暇な時に適当にプログラミングをあれこれ試す時があると思うが、 そういった時のログを投稿できるサービス。 Qiitaやブログのようにきっちりプログラムや記事…

CodeIgniterのコーディング規約が独自すぎる

CodeIgniterのコーディングスタイルが独自路線過ぎて唖然とした。 PSR等この世に存在しない、と言わんばかりのドキュメントページ。 PHP Style Guide — CodeIgniter 3.1.3 documentation クラス名、メソッド名、変数名

CodeshipでBitBucketのCakePHP3のCI

BitBucketのCakePHP3プロジェクトのリポジトリをCodeshipで無料CIを試した。 werckerを使おうと思ったのだが適したDockerイメージが無いとダメで、 適当に設定してみようと思ったがうまくいかなかったりして時間の無駄な気がしたので、 試しにCodeshipを使っ…

BitBucket+WerckerでLaravel5のCI

BitBucketはWerckerと連携するとプライベートリポジトリで無料CIができる。 Werckerに登録してBitBucketと連携し、 publicにしないようにだけ注意しながらあとは言われるがままに設定していけばすぐできる。 wercker.ymlを作るところだけ、現状phpの設定サン…

cakephp/migrationsにプルリクエストを送った

はじめに CakePHP3 Advent Calendar 2016 - Qiita 20日目が空いていたので。 内容 CakePHP3のマイグレーションにはmigration_diffという機能があり、 差分から自動的にマイグレーションファイルを作ってくれる超便利な機能がある。 ただ1点、 afterオプショ…

CakePHP3の優位性を色々

はじめに この記事は下記の1日目としての投稿。 CakePHP3 Advent Calendar 2016 - Qiita 昨今は様々なphpフレームワークがある。Laravelとかは最近流行ったりしていて色々触ってみるが、 自分はやっぱりCakePHP3に帰ってきてしまう。それだけ便利で楽だから…

Linux Mint18でapache2.4とphp7

Linux Mint18でapache2.4とphp7を使うとエラーが起きた。 phpMyAdminを使おうと設置して閲覧すると、phpのソースがそのまま表示された。 phpのモジュールがロードされてないっぽいので調べてみると、 /etc/apache2のmods-availableにはphp7関連ファイルがあ…

CakePHP3とLaravel5のマイグレーション比較

phpのフレームワークには大体マイグレーション機能がついている。 業務でアプリケーション開発を行う時は各開発者のローカルの開発環境、サーバー上の開発環境、ステージング環境、本番環境などと分かれていたりするため、 そういった場合はマイグレーション…

mailtodiskでメールが保存されない場合

xamppにはmailtodiskが入っているため、 テストの際はいちいちメールを実際に飛ばさなくても確認ができるので便利。 しかし、ある時どうやってもメールが保存されなくなることがあった。 なぜだろうと思い調べていると、ふとエディタのファイル一覧がたまに…

CakePHP3でアソシエーションが保存されない

CakePHP3は単なるエンティティの保存もアソシエーションを含む保存も全てsaveメソッドで行う。 しかしなぜかこの関連データが保存されない場合があった。 原因を探ってみるとdirtyが無かったため。 Users hasMany Itemsの場合であれば $user->dirty('items');…

CakePHP3でEmailのfromの共通設定をDBで指定する

CakePHP3はapp.phpにてメール送信のfromのデフォルトを簡単に設定できる。 固定ならそれで問題ないのだが、問題はDBの設定でfromを指定したい場合。 bootstrap.phpを見てみると、app.phpの設定はConfigure::consumeで削り取られており、 あとでConfigure::wr…

CakePHP3のテーブルにprefixを使う方法

CakePHP2まではDB設定でprefixが使用できたのだが、 何故か3になってから設定がなくなっている。 テーブルクラスにそれぞれ設定していくのが普通だが、 bootstrap.phpのuseをたくさんしている箇所に use Cake\Event\EventManager; 末尾に EventManager::inst…

CakePHP3ページネーション時にhead内にSEO対策のlinkタグを挿入する

ページ分けをする際、それらのページは一連の同じページであることを示すために headタグ内に下記のようなタグを挿入する。 下記のような感じ。 <link rel="prev" href="http://www.example.com/article?story=abc&page=1" /> <link rel="next" href="http://www.example.com/article?story=abc&page=3" /> CakePHP2のころからあったようでそちらのマニュアルには書かれているのだが、 下記をheadタグ内に入れておく</link></link>…

さくらサーバーのSSLでLaravel5を正しく動作させる

qiita.com 上記の通り、さくらの共用レンタルでは正しくURLが取得できない。 url, asset, redirect関数など。 Laravel5もほぼ同様だが、フィルターではないので 適当な箇所でhttpsをonに上書きする。 例えばAppServiceProviderのboot等。 if (isset($_SERVER…

Hierselectプラグインの作成

HierselectのjQueryプラグインを作成した。 Hierselectというのは、例えばプルダウンで大、中、小カテゴリを選択する際に、 大カテゴリの選択によって中カテゴリプルダウンの中身を属するもののみに更新し、 さらに中カテゴリの選択によって小カテゴリのプル…

Laravel5でテスト時にtesting設定を使う方法

Laravel5.0での話。 現在の5.2では改善されているのかもしれない。 マニュアルを見ると自動的にtesting環境に切り替えると書いてあるが、 何も変わっている様子が見られないしそもそも設定方法が書かれていない。 仕方がないので色々調べてやってみた。 正し…

CakePHPとLaravelの使い道

ずっとCakePHPを好んで使ってきたが、Laravelがすごく人気が高いとのことなので使用してみて色々と比較。 情報量 Laravelはドキュメントのどのページを見ても何か説明が足りない気がする。 人のパッケージのソースを見たり検索で情報を探したりしなければな…

Laravelのdebugbarでテンプレートに渡された変数を自動的にダンプ

GitHub - barryvdh/laravel-debugbar: Laravel Debugbar (Integrates PHP Debug Bar) を使うと Debugbar::info($var); でdebugbarのMessagesタブにその変数をダンプすることができる。 ビューコンポーサーを利用するとviewにセットした全ての変数を自動的に…

CakePHP3のテスト時にBehaviorによるエラー

CakePHP3でテストをする際、突然大量のエラーが発生することがあった。 その直前にやったことといえばBehavior関連のテストの作り込み。 関連するテストが2箇所あるのだが、その両方を実行するとエラーになり、どちらかだけコメントアウトするとエラーが出…

CakePHP3のテスト時にテーブルが見つからない場合

CakePHP3でphpunitを走らせるとテーブルが存在しない旨のエラーが発生。 fixtureもあるしちゃんと設定もしてあるし、なぜ発生するのか不明… という場合。 behaviorのinitializeの中でTableのschemaを取得などしていると、 テーブルをfixtureの設定ではなくim…

CakePHP3のシンプルなアップロードプラグインを作成

CakePHP3用のシンプルなアップロードプラグインを作成した。 GitHub - dala00/cakephp-simple-upload そもそもCakePHP3用のアップロードプラグインは有名なものが存在する。 GitHub - josegonzalez/cakephp-upload: CakePHP3: handle file uploading sans ri…

CakePHP3の多言語対応が正しく動作しない場合

CakePHP3には元々多言語化機能が付いている。 src/Locale/ja/deafult.po に翻訳ファイルを設置しておくのだが、 これが正しく動作しない場合があった。 原因として、このファイルをCakePHPが読み込む際に is_fileでファイルかどうかを取得しているのだが、 …

CakePHP3のテストの時はメールを送信しないようにする

php

CakePHP3のテスト実行時にメールを送信しないようにする方法。 DebugTransportというメールを送信しないトランスポーターがあるので その設定に置き換えるだけ。 モックの使用なども特になくシンプル。 public function setUp() { parent::setUp(); Email::d…

CakePHP3でのajaxを取得する場合

php

CakePHP3でajaxにてデータを取得する場合、 普通にテンプレートとアクションを作っても 何故かテンプレートがないと文句を言われた。どうもajaxの場合は Layout/ajax/default.ctp を用意しなければならないらしい。 アクションテンプレート側も同様に ajaxフ…

CakePHP3のHelper内でViewにsetされた値を取得

php

CakePHP3にて、controller側で $this->set('hoge', $hoge); した値はヘルパー内では $this->_View->get('hoge'); のようにして取得できる。

CakePHP3にてbehaviorのbeforeSaveが機能しない場合

php

表題のままなのだが、TimestampBehaviorのように 保存時にとあるフィールドを自動保存するbehaviorを作成した。 マニュアルのままやっただけなのだが全く動作する様子が無い。数時間調べて分かったのは、 どうもそこを動作させる際にdirtyを見ているらしく、…

CakePHPのページネーションのソートでリレーションモデルを使う

php

CakePHPは下記のようにして一覧ページを指定カラムでソートできるリンクが作れる。 $this->Paginator->sort('age', '年齢'); この時、一覧ページにリレーションデータの列などがあると そちらでもソートできないといけないのだが、 $this->paginateにorderを…