まとめ
yarn add bootstrap@next @popperjs/coresrc/main.jsに次を追加する。import "bootstrap"; import "bootstrap/dist/css/bootstrap.min.css";
yarn add bootstrap@next @popperjs/coresrc/main.js に次を追加する。import "bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
ページの検索フォームに入力して検索ボタンをクリックすると AJAX で検索用 API を実行する。この時に、検索パラメータを URL のクエリパラメータとして URL へ反映することはできるのか?
また、ブラウザでの戻る、進むをクリックした時も、検索結果をページに表示するのはもちろん、 URL クエリ引数や検索フォームに検索キーワードを反映させたい。
以下、 Vue.js 2 (Options API) での勘所です。 Compotision API でもポイントは同じで、メソッドを適宜置き換えてください。どちらの実装例も本記事にあるので、具体例を参考にするのも、良いと思います。
created メソッド内でリソースサーバからデータ取得を行う。push を行う。例えば this.$router.push({ name: "AboutA, query: { base: "JPY" } }) となる。これにより beforeRouteUpdate メソッドが実行され、ここでリソースサーバからデータ取得を行う。これらの Vue Router の公式ページをしっかりと読み込んで理解できれば、本ページでやりたいことは実現できました。
住所の中にどの都道府県が含まれているのかを知りたい時。
u を指定する。参考 => PHP: 正規表現パターンに使用可能な修飾子 – ManualC-b (Ctrl-b)) + :newdocker-compose コマンドだけで環境をうまく切り替える方法docker-compose -f オプションを使うことで、使用する YAML ファイルを取捨選択できるようになった。これを利用して、開発環境用ではボリューム共有を使い、サーバ環境用では別のサービスを追加する、といったことが可能になる。docker-compose -f オプションで毎回 YAML ファイルを指定するのはとても手間がかかるが、解決することができる。Compose の設定に用いられる環境変数のデフォルト値を .env という 環境ファイル で行うことができる。このファイルに COMPOSE_FILE という CLI 変数 を定義し、その値に使用する YAML ファイルを指定することで -f オプションを省略することができる。.devcontainer/devcontainer.json が独自の設定ファイル。 .devcontainer/docker-compose.yml はただの Docker Compose ファイル。.devcontainer/devcontainer.json と .devcontainer/docker-compose.yml の難しい箇所は本投稿の続きに記載した。5.8. 行セキュリティポリシー を利用することで単一データベースかつ単一スキーマ方式を採用したマルチテナントアーキテクチャをより安全にすることができそうです。
実際にシステムやアプリに組み込む前に、 PostgreSQL の Row Level Security とはそもそもどのような物なのか、手を動かすことで体験いたしました。
本投稿では、その時の動きをまとめます。また、時間が経ってもう一度 PostgreSQL の Row Level Security をおさらいしたくなったり、新たに挙動を確かめたくなったりした時のために、すぐにお試しの環境を作れるように記録を残します。
Laravel7 で入力値そのものと入力値を分割した配列の両方を一度にバリデーションするためのルールの書き方 – oki2a24 を改善する話です。
php artisan make:rule <name> コマンドで app/Rules ディレクトリに新しいルールオブジェクトのファイルを生成できる。passes($attribute, $value) メソッドでバリデーションを行う。
$attribute: フォームの属性名$value: フォームに入力された属性値。これをバリデーションすることになる。rule メソッでのルールオブジェクトの使用方法は、ルールを書く場所にインスタンス化すれば良い。そのため、ルールを書く際は文字列を | で区切るのではなく、配列で定義することになる。passes メソッドで $attribute と $value 以外の値を使いたい (例えばバリデーション時の判定に使う最大数とか) 場合は、ルールオブジェクトのコンストラクタで渡す。message メソッドで例えば passes メソッド内で出てきた値を使いたい場合は、passes メソッド内からプロパティに渡してやればよい。rules メソッド内に 2 つ以上のクロージャのルールが存在するとテスト時にどのクロージャがテストに該当するのかわからなくなる。そのため試してはいないが ルールオブジェクトの使用 – カスタムバリデーションルールのメソッドを定義 をした方が良いと思われる。'required', 'email:rfc,spoof' といったバリデーションルールを宣言できない。とはいえ該当するバリデーションロジックを書くのは車輪の再開発となり、おかしい。探すと、 Illuminate\Validation\Concerns\ValidatesAttributes トレイトに各バリデーションルールの実装となっているのでこれを use して利用する。実際に書いたコードから少し内容を変えており、実際に動かない可能性がありますことを最初にお断りします。エッセンスを伝えるためのコードとなります。
例えば、ログインに外部の OpenId Connect サービスを使う場合、今回は Google としましょうか。ユーザーを作成したときは Laravel の googles テーブルに連携時のデータを保存しているものとし、モデルでは user->google でアクセスできるものとします。
ユーザーを削除する時にイベントを実行し、リスナーで Laravel の google レコードを削除するとします。この時のリスナーの handle メソッドを、次のようにテストしました。
app メソッドを使用した。app メソッドは普通に使える。
states メソッドで users レコード作成後に googles レコードも作成している。登録は、 UserFactory クラスで afterCreating メソッドを使って行っている。
Docker イメージ php:7.4.5-apache で Apache の他に cron も動かす方法 – oki2a24 のcrond の実行ログを docker のログに出力するようにしたと思ったが出力されていない、という問題に対処できました。