プレフィックスルーティング

Posted by muchag | CakePHP 3.x | 2018-02-23 (金) 15:10:12


公式:ルーティング プレフィックスルーティング

【環境】
CakePHP: 3.5.8
php: 7.1.5
ルートクラス
CakePHP 3.x | 2018-02-23 (金) 15:10:12 |

ルートクラス

Posted by muchag | CakePHP 3.x | 2018-02-23 (金) 15:04:46

ルーティングルールを設定するクラス。
公式:ルーティング

【環境】
CakePHP: 3.5.8
php: 7.1.5
既存
/vendor/cakephp/cakephp/src/Routing/Route

この中にしまわれており、デフォルトで下記4クラスが存在する模様。

  1. DashedRoute
    1. 単語を -(ハイフン、ダッシュ)で連結
    2. URL:/my-controller/my-action
    3. 対応アクション:MyController::myAction
  2. InflectedRoute
    1. 単語を _(アンダースコア)で連結
    2. URL:/my_controller/my_action
    3. 対応アクション:MyController::myAction
  3. PluginShortRoute
  4. RedirectRoute
    1. 個別の URL に対してリダイレクトを設定
    2. パラメータを渡すことも可能
    3. 公式:ルーティング リダイレクトルーティング
カスタム

公式:ルーティング カスタムルートクラス
ここを見ると、自前のルートクラスを作成、設定可能みたい。

デフォルト

公式:ルーティング デフォルトルートクラス

デフォルトのルートクラスは、下記のように設定するみたい。

/config/routes.php

Router::defaultRouteClass(InflectedRoute::class);

実際に当該ファイルを覗いてみると、最初に記述されている。

フォールバックメソッド

公式:ルーティング フォールバックメソッド


$routes->fallbacks(DashedRoute::class);

このような記述を見かけるけど、上記公式の記事にも書いてあり
route.php にも記述されているように、
設定されていないルーティングに対する
デフォルトのルーティング設定を記述するショートカットメソッドとのこと。

実際には、下記のように記述しているのと同じだそうな。


$routes->connect('/:controller', ['action' => 'index'], ['routeClass' => DashedRoute::class]);
$routes->connect('/:controller/:action/*', [], ['routeClass' => DashedRoute::class]);
参考サイト

sakutarou’s blog:CakePHP3のRouteクラス3種(2016-12-05)

CakePHP 3.x | 2018-02-23 (金) 15:04:46 |

Localkit が起動しない!

Posted by muchag | Monaca | 2018-02-18 (日) 21:59:11

【環境】
Monaca LocalKit: 2.5.0? → 2.5.1
経緯

ある日突然 Localkit が起動しなくなった。

アプリアイコンをクリックして、処理中のグルグルが断続的に2,3回出たものの
サッパリ起動しない。

Localkit をアンインストールして、再インストールしてもダメ。

原因

不明。

解決

teratail:Monaca LocalKitが起動されません(2017-12-11)
こちらの記事のおかげで解決。

記事にある通り、下記手順にて無事に起動するようになった。

  1. Localkit(おそらく 2.5.0)をアンインストール
  2. 下記2ディレクトリを削除
    1. ローカルディスク(c)/Users/(ユーザ名)/.cordova
    2. ローカルディスク(c)/Users/(ユーザ名)/AppData/Roaming/Monaca Localkit
  3. Localkit 2.5.1 を再インストール

私が戸惑っている数ヶ月の間に、解決記事がアップされていて助かりました。
ありがとうございました。

プロジェクト追加

プロジェクトが綺麗サッパリなくなっていたので

  1. 左ペイン「プロジェクト一覧」右にある+ボタンから
  2. [インポート]-[Cordova プロジェクトをインポート]
  3. 「既存の Cordova プロジェクトをインポート」
    1. 作業ディレクトリ:[参照] からローカルリポジトリ(ディレクトリ)を選択
    2. プロジェクト名:任意
    3. [インポート]
Monaca | 2018-02-18 (日) 21:59:11 |

構成設定

Posted by muchag | CakePHP 3.x | 2018-02-14 (水) 13:12:41


公式:構成設定

【環境】
CakePHP: 3.5.8
php: 7.1.5
参考サイト

新人Webエンジニアの記録。:CakePHP3のConfigureクラスに関して調べました(2015-01-18)

CakePHP 3.x | 2018-02-14 (水) 13:12:41 |

Entity

Posted by muchag | CakePHP 3.x | 2018-02-11 (日) 13:38:04


公式:エンティティー

【環境】
CakePHP: 3.5.8
php: 7.1.5
アクセサーとミューテーター

公式:エンティティー アクセサーとミューテーター
getter, setter のカスタマイズ。

アクセサー

getter のカスタマイズ。


protected function _getFieldName($value)
{
    return ucwords($value);
}

echo $user->field_name;
echo $user->get('field_name');
仮想プロパティ

テーブル上に存在しないプロパティを取得したい場合は
アクセサーを用いる。


protected function _getFullName()
{
    return $this->_properties['first_name'] . '  ' .
        $this->_properties['last_name'];
}

echo $user->full_name;
ミューテーター

setter のカスタマイズ。
値を設定する時に間に挟むものなので、戻り値が存在する。


protected function _setFieldName($value)
{
    return Text::slug($value);
}

$user->field_name= 'foo';
$user->set('field_name', 'foo');
CakePHP 3.x | 2018-02-11 (日) 13:38:04 |

DateTime

Posted by muchag | C# | 2018-02-11 (日) 12:23:12


MSDN:DateTime 構造体
MSDN:DateTime 演算子
MSDN:DateTimeOffset 構造体

【環境】
Visual C#: 15.5.4(2017)
文字列変換

dobon.net:日時(DateTimeオブジェクト)を文字列に変換する

C# | 2018-02-11 (日) 12:23:12 |

双方向データバインド

Posted by muchag | C# | 2018-02-11 (日) 12:21:07

【環境】
Visual C#: 15.5.4(2017)
参考サイト

MSDN:とあるコンサルタントのつぶやき Part 1. 双方向データバインドの基本的な使い方(2009-02-26)
→とてもわかりやすい解説

@IT:WPF/UWP:ラジオボタンを双方向バインディングするには?[C#/VB](2016-02-03)
→ラジオボタンにおける双方向データバインド

C# | 2018-02-11 (日) 12:21:07 |

LINQ -> Where

Posted by muchag | C# | 2018-02-08 (木) 10:54:02

【環境】
Visual C#: 15.5.4(2017)
OR

if 文と同じように書けば良い。


.Where(x => x == 1 || x => x == 2)
動的に生成

C#erの備忘録:Linqの動的条件生成ライブラリ(2013-02-16)
→ありがたくライブラリを使わせていただいたけど、期待通りには動かなかった。


var condition = ConditionChain.Create(condition1).OrElse(condition2);

ここで、null になっちゃったんだったっけか。。。

C# | 2018-02-08 (木) 10:54:02 |

Database operation expected to affect 1 row(s) but actually affected 0 row(s).

Posted by muchag | C# | 2018-02-06 (火) 0:12:26

【環境】
Visual C#: 15.5.4(2017)
経緯

SQLite3 で管理しているデータを削除しようとしたら
下記エラーが出た。

{“Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions.”} Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException

データが既に更新またや削除されているよ。。。って、誰よ~TT

原因

データベースに格納されている日付文字列が「2018-02-05」となっていたため
DateTime 型で値を持っている C# では「2018-02-05 00:00:00」となり
整合性が取れなくなっていたみたい。

解決

データベース側の値を「2018-02-05 00:00:00」とすることで
エラーは出なくなった。

愚痴

そもそも SQLite のデータ型に DateTime がないから・・・。
ん~なんで、初期データを「2018-02-05」しちゃったんだろう。。。
私がアホなだけよね。。。

C# | 2018-02-06 (火) 0:12:26 |