Pages

2016年6月28日火曜日

CakePHP3 フォーム利用せずに hasMany 指定のテーブルに追加して save する

何か意味不明なタイトルになりましたが。。

今回シェル内でhasManyに指定されたTagsにデータを追加する事をsave一つでやりたかったんです。

何かしっくりこない気がまだしていますが、とりあえずこんな感じかな。。
$article = $articles->get(1, ['contain' => 'Tags']);

$data = $article->ToArray();
$data['tags'][] = [
  'name' => 'Tag Name',
];

$articles->patchEntity($article, $data, ['associated' => 'Tags']);
$articles->save($article);

2016年6月3日金曜日

iOS PowerPointファイルをsafariで開いて戻るとフォントが大きくなっちゃった!

そう、そんな時はこれ!

body {
  -webkit-text-size-adjust: 100%;
}

上記を指定してあげれば対応できました。

2016年5月29日日曜日

Chrome で Selenium を利用する

FireFox の拡張機能で提供されてる Selenium を Chrome でも使いたい。。

けどまだ Chrome ウェブストア の 拡張機能(https://chrome.google.com/webstore/category/extensions) で提供してくれない。。



しばらく待ってたけど、まだ提供されないので、もう 検索したら良く出てくる WebDriver 入れてFireFoxの拡張機能から実行するってやつ入れちゃいました。。


簡単に手順まとめ

  1. ダウンロード
  2. 設置
  3. サーバー起動
  4. FireFox起動
  5. テストケース実行

手順


ダウンロード

Selenium - Downloads

http://www.seleniumhq.org/download/


必要なファイル
  • Selenium Standalone Server (version 2.53.0)
  • The Internet Explorer Driver Server (version 2.53.1)
  • Third Party Drivers, Bindings, and Plugins > Google Chrome Driver > 2.21 > chromedriver_win32.zip (version 2.21)
※ ()内は自分が入れた時のバージョンです。

設置

設置はファイルをどこかに置くだけの簡単な作業

今回は D:\app\selenium\server というフォルダーを作成して、そこの以下を保存。


  • selenium-server-standalone-2.53.0.jar
  • IEDriverServer.exe
  • chromedriver.exe

サーバー起動

コマンドプロンプトを立ち上げて、以下を実行するとサーバーアプリが起動する。


  D: \
  cd \app\selenium\server \
  java -jar selenium-server-standalone-2.53.0.jar -Dwebdriver.ie.driver=.\IEDriverServer.exe
これでサーバーは起動する。


FireFox起動

FireFox を起動して Selenium を立ち上げる。

※ Selenium 立ち上げたらFireFoxのブラウザ側は閉じてもOK。


テストケース実行

後は、いつも通りテストケースを実行すると、Chromeのウィンドウが新規作成されて、実行されていく。

何か問題があれば、Seleniumのログとコマンドプロンプトを確認する。



2016年5月25日水曜日

CakePHP3 文字数チェックで改行コードがWindowsの時は2文字扱いになる

簡単に予想するからに

環境別改行コード

Windows CR+LF
Macintosh CR
Linux LF

って感じで Windows だけ2バイトになってるからだろう。。
って事で Validation.php を確認すると

public static function maxLength($check, $max)
{
    return mb_strlen($check) <= $max;
}
やっぱり。。 って事で AppController.php(デフォルトでは無い?) の initialize() に
array_walk_recursive($this->request->data, function(&$item, $key){
    // 改行コードをLFに統一
    $item = preg_replace("/\r\n|\r|\n/", "\n", $item);
});
を追加して今回は対応。

2016年3月21日月曜日

Bootstrap3 と jQuery UI のtooltip が衝突してる

 jQuery UI の tooltip 使おうと思ったらなんか想像とは違う結果が。。

って事で調べたら Bootstrap にも同じJS関数が用意されていてそいつを上書きしてしまっている様子。

という事で以下のように記述して、jQuery UI の方を uitooktip という名前で利用できる事を見つけたので、これで対応。


        



Followers