- 1. 簡易的なclearlinuxベースのlumen環境
- 2. LaravelでJSのAjaxを使って非同期通信を行う
- 3. LaravelでOneSignalを使って特定ユーザーに通知する方法
- 4. Laravel Factoryで範囲指定のあるダミーデータを作成
- 5. PhpstomでのDockerローカル環境の開発におけるXdebugの設定手順
- 6. エラー文『Invalid argument supplied for foreach()』にハマった
- 7. Laravel SaleでのPHPのパス解決
- 8. PHPのmap()関数内でローカル変数を使う方法
- 9. Illuminate\Http\Requestについて雰囲気でやっていたので個人的にメモした
- 10. 繰り返し処理【PHP】
- 11. Laravelのselectフォームでoption hiddenを利用した時のvalidationについての忘備録
- 12. 【Docker + Laravel】WebPushでプッシュ通知機能作成中のエラー 【WebPush gmp extension is not loaded but is required for sending push notifications with payload . You can fix this in your php.ini】
- 13. 【Laravel-Excel】Laravelでエクセルファイルを操作する
- 14. 各種言語におけるINIファイルのエラー扱い
- 15. [Laravel] FormRequestまとめ
- 16. 【PHP学習_備忘録】 フォームデータを配列で受け取る,クロスサイトスクリプティングとは
- 17. 【Laravel】php artisan serveで起動できない
- 18. 連想配列について
- 19. クライアントとサーバーでタイムゾーンを合わせる3つの方法
- 20. Laravel入門メモ
簡易的なclearlinuxベースのlumen環境
– コンテナ環境で構築するPHPのベースイメージとして定番のphp-fpmがあるが容量の重さは否めない。
– その対応策としてalpineという軽量ベースイメージを用いることも多いが、堅牢性やパフォーマンスの心配もある。
– そこで今回は、堅牢性やパフォーマンスが高いと言われているclearlinuxをベースイメージにして、軽量FWのlaravel製のlumen環境を作成する。## 環境
– Mac OS X 10.15.6
– Docker version 20.10.8
– Docker Compose version v2.0.0-rc.1## 手順
### 必要ファイル作成
– 以下のコマンドを入力して、必要なファイルを作成する。“`bash
# 作業フォルダ作成 & 移動
mkdir work; cd $_
# docker file作成
touch Dockerfile docker-compose.yml .dockerignore
# nginxの設定ファイル作成
touch default.conf
“`– 作成後、各ファイルの中身を以下のように
LaravelでJSのAjaxを使って非同期通信を行う
#laravelでの基本的な非同期通信の仕方です。
ほぼ下記の記事の内容になりますが個人的な補足説明です。
参考記事
https://qiita.com/kakudaisuke/items/01816910b7b9ecba0486流れ的にはviewにある値をjsに投げてajax通信で定義したroute-からcontrollerに値を飛ばして処理した内容をまたjsonでjsに返してあげます。
例
まずはdata-review-idの値をjsに投げます。
“`php:index.blade.php
@if (!$box->isLikedBy(Auth::user()))
{{$box->likes_count}}<LaravelでOneSignalを使って特定ユーザーに通知する方法
プログラミング初心者です。
OneSignalを使って、特定ユーザーに通知する機能を実装しました。
頭を整理するために記録しておきます。##開発環境
Laravel5.8
PHP 7.3.24
MAMP##1 OneSignalの登録
まずOneSignalの登録や、途中までの実装は[こちら](https://qiita.com/iritec/items/47c69c61c3731f63688c)のQiita記事を参考にさせていただきました。
登録方法は[document](https://documentation.onesignal.com/docs/web-push-typical-setup)にも書いてあるので、参考にしてみてください。##2 通知ON/OFFするやつ設置
JavaScriptを使って通知を登録するかしないか部分を実装します。
何を表示させるかは、OneSignalサイトの設定で、SUBSCRIPTION BELL(ベルマーク)やPUSH PROMPT(上からスライドで出てくる)を選べます。
私はベルマークを表示するように設定しました。そして表
Laravel Factoryで範囲指定のあるダミーデータを作成
いつからいつまでとか、◯◯のうちいずれか等、範囲指定のあるダミーデータを作成する。
## Fakerを日本語化する
“`config/app.php
‘faker_locale’ => ‘ja_JP’,
“`
ダミーデータに日本語が含まれる場合はapp.phpの`faker_locale`を日本語にする。## Factoryを作成する
“`
% php artisan make:factory RecordFactory –model=Record
“`
ファクトリを作成する。
モデルを指定しておけば、ファクトリファイルに`use App\Models\モデル名;`が自動で書き足される。## ファクトリファイルを編集(Fakerを使用)
“`database/factories/RecordFactory.php
use App\Models\Record;
use Illuminate\Database\Eloquent\Factories\Factory;
.
.
.
public function definition()
{PhpstomでのDockerローカル環境の開発におけるXdebugの設定手順
## 概要
表題の通り、PHPのDockerの開発環境でデバッグを行いたかったため、設定手順を残す## 環境
– macOS Big Sur (Version 11.4)
– PhpStorm 2021.2
– Docker Desktop for Mac(2021-08-23 時点の最新)
– PHP 8.0.0RC5
– Xdebug v3.0.4## 手順
### Xdebug設定ファイルの追加
php.ini等設定ファイルを格納しているディレクトリにxdebugのiniファイルを作成する
※ php.iniを直接編集してもよいが、設定内容をわかりやすくするため分ける“`xdebug-local.ini
[xdebug]
xdebug.idekey = phpstorm # 任意の名前
;xdebug.mode = off # 無効化する際はoffに書き換えて再ビルドする必要がある
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internaエラー文『Invalid argument supplied for foreach()』にハマった
タイトルに記載のあるエラーを解消するために小一時間戦っておりました。
今後、同じ失敗を繰り返さないために記録を残します。#事象
ECアプリ作成においてカートの実装をしていたのですが、indexメソッドにてforeachの引数エラーがでました。エラー文:Invalid argument supplied for foreach()
どうもこちらのエラーは「foreachの引数が不正だよ」という意味のようです。
“`CartController.php(indexのみ記載)
class CartController extends Controller
{
public function index()
{
$user = User::findOrFail(Auth::id());
$products = $user->products;
$totalPrice = 0;foreach($products as $product){
$totalPrice += $product->price * $product->Laravel SaleでのPHPのパス解決
## 概要
WSL2上でLaravel Sailで環境を構築しVSCodeを使用した際に、PHP関連のエクステンションを動かしたいが、PHPのパスが解決出来ていないと動作しないエクステンションがあり、その解決で動いた方法のメモ。WSL環境はWindows10、Ubuntu-20.04
## 方法
PHPを実行するファイルを作成する。
“`shell
sudo vi /usr/local/bin/php
“`以下の内容を記載して保存する。
内容的には、実行時のディレクトリ名を取得して、それを`Docker exec`の際のコンテナ名に使用して、PHPを実行する。コンテナ名はLaravel Sailのデフォルトになっているので、もしコンテナ名が異なれば適宜修正する。
“`shell
path=$(printf ‘%s\n’ “${PWD##*/}”)
command=”docker exec ${path}_laravel.test_1 php “$@””
$command
“`実行権限を付ける
“`
sudo chmod +x /usr/localPHPのmap()関数内でローカル変数を使う方法
Laravelを使っていた際に外で定義した変数をmap()関数内でグローバル定義したにもかかわらず値がnullだったので調べたところ下記の記事を見つけました。
https://stackoverflow.com/questions/48150838/how-to-access-to-variable-in-outside-the-map-function-in-laravel-php
#間違え例
“`php:MainController.php
public function myloc(Request $request){
$my_lat=$request->my_lat;
$my_long=$request->my_lon;$boxes->map(function($item,$key){
global $my_lat,$my_long;$item[‘distance’] .= $item->distance1($my_lat,$my_long)
Illuminate\Http\Requestについて雰囲気でやっていたので個人的にメモした
Controller内でRequestをいい感じに使えることができるように諸々まとめた
## リクエストされたURLを知りたいとき
クエリ文字列が必要ない場合は、以下“`php
$url = $request->url();
“`クエリ文字列が必要な場合は、以下
“`php
$urlWithQueryString = $request->fullUrl();
“`パスのみが必要な場合は、以下
“`php
$uri = $request->path()
“`## リクエストされたURL/メソッドによって処理を分けたいとき
“`php
if ($request->is(‘admin/*’)) {
// 処理
}
“`名前付きルートに一致するか確かめるときは、以下
“`php
if ($request->routeIs(‘admin.*’)) {
// 処理
}
“`リクエストメソッドが知りたいときは、以下
“`php
$method = $request->method();
“`リクエストメソッドが指定の
繰り返し処理【PHP】
こんにちは
PHP初心者です。
今回は繰り返し処理についてメモしていきます!# while
while構文はある条件が満たされるまで
処理を繰り返すことができます。書き方としては
“`php
初期化処理
while(繰り返す条件) {
繰り返したい処理
更新処理
}
“`
というカンジで例を出すと、
以下のような記述になります。“`php
$i = 1;
while ($i <= 100) { print($i . "\n"); $i += 1 } ``` 初期化処理は```$i = 1```にあたります。 変数iに1を代入したんですね。 繰り返す条件は```($i <= 100)``` これは$iが100以下であれはtrueとなり、 中かっこ{}の中身の処理を行います。 処理が行われる順番としては 1. $i = 1を定義 2. ($i <= 100)がtrueかどうか判断 3. 2がtrueになるのであれば、$iの値を出力 4. $iに1を加算 この順番で$i =100になるまで繰り返されます。 比較演算子<=が出てきたのでLaravelのselectフォームでoption hiddenを利用した時のvalidationについての忘備録
##バリデーションで実現したい事
フォーム内のselectで選択されずに(option hiddenの項目が選択されたまま)submitされた時、
バリデーションエラーにする。今回は「会社」を登録する時の情報のうち
住所の「都道府県」をselectから選択するようにした。“`php:corp/create.blade.php
//省略//都道府県データ
//$prefs =[‘北海道’,’青森県’,’岩手県’・・・・];
“`上記のような場合、selectで「都道府県」は選択出来ないようになっているが
選択しないまま送信すると「都道府県」がvalueとなって送信されて、
requiredのバリデ【Docker + Laravel】WebPushでプッシュ通知機能作成中のエラー 【WebPush gmp extension is not loaded but is required for sending push notifications with payload . You can fix this in your php.ini】
## はじめに
突然ですが、、、、
アプリケーションにメッセージのポップアップ通知機能を実装することになりました。実装したい機能のイメージはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594063/282c74f2-2ba3-0027-4750-d6de7759f266.png)
(Gigazine様の記事から引用させていただきました。)
画像引用元:[Google ChromeがMac OS Xでネイティブ・プッシュ通知に対応](https://gigazine.net/news/20160407-chrome-native-push-notifications-mac/)“Google Chrome“使ってると出てくるアレです。
嫌いな人が多いのではないでしょうか。
通知自体を切ってる人が結構多いイメージです。今回はそんな~~嫌われ者の~~こいつを実装したいので早速方法を調査しました!
## 実装
ネットの海を調べ
【Laravel-Excel】Laravelでエクセルファイルを操作する
## 背景
Laravelにはエクセルファイルを簡単に操作できる[Laravel-Excel](https://laravel-excel.com/)というライブラリがあります。
このライブラリの記事はたくさんありますが、Githubのリポジトリやテストなどのサンプルコードがあるものが少なかったのでメモ
すべてのコードは[Githubのリポジトリ](https://github.com/yasuaki640/laravel-excel-sample)にpushしてあります。
### 諸注意
サンプルコードは簡便のため、層の分離等は行っておらず若干ファットコントローラーになっています。
## インストール
### 環境
– Laravel 8.x
– PHP 8### Laravelインストール
[docker-laravel](https://github.com/ucan-lab/docker-laravel)というLaravelアプリを簡単に用意できる環境があるのでこちらを`clone`する。
READMEにしたがって環境を立ち上げる。
### ライブラリ
各種言語におけるINIファイルのエラー扱い
INIファイルを間違って編集したことで、システム障害に至るケースに遭遇したので、これを期に自分が仕事で良く使っている言語におけるINIファイルのエラーの扱い方についてまとめた。
なお、現在INIファイルは https://ja.wikipedia.org/wiki/INI%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB によれば、規格化/標準化されていないらしい。# 調査対象言語
Windows上で以下の言語とWin32 APIについて調査した。
|言語とバージョン |ライブラリや関数 |
|—————————-|———————–|
|PHP 7.4.22 (x64) |parse_ini_file |
|Strawberry Perl 5.32.1 (x64)|Config::Tiny |
|Python 3.7.9 (x86) |ConfigParser |[Laravel] FormRequestまとめ
#はじめに
基本含め、現場でよく使う関数をまとめたいと思います。
Laravelのバージョンは7.30.4です。#目次
* rules()
* attributes()
* messages()
* validationData()
* prepareForValidation()
* replace()
* merge()
* withValidator()#rules()
**バリデーションルールを定義する**関数です。
“`php:app/Http/Requests/Example.php
public function rules()
{
return [
‘name’ => ‘required|max:30’,
];
}
“`“`html
“`name属性の値である”name”フィールドに対して
* 必須(required)
* 最大30文字(max:30)というバリデーションルールを定義しているということになります。
##attri
【PHP学習_備忘録】 フォームデータを配列で受け取る,クロスサイトスクリプティングとは
##はじめに
本記事でやること
・フォーム入力用のHTML画面を簡単に作って、フォームデータを受け取るプログラムの作成
・エスケープ処理とは
・【セキュリティ】 クロスサイトスクリプティングとは##フォームデータを受け取るプログラム
“`html:html
Document
“`“`ht
【Laravel】php artisan serveで起動できない
###環境
OS: Windows10
“`
chocolatey -v
0.10.15composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.1.6 2021-08-19 17:11:08php -v
PHP 8.0.9 (cli) (built: Jul 29 2021 14:12:27) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologie連想配列について
# PHP初心者
こんにちは!
Ruby on Railsによるオリジナルアプリケーションが落ち着いたので
他の言語を学びたいなあと思いPHPを勉強中です。
まだまだPHP初心者なので、メモ用として
投稿してみました。# PHPの配列の記述法
“`php
$shaman = [“五条悟”, “七海健人”, “歌姫”];
“`基本的にRubyの配列記述法とあんまり変わらないですね。
異なるのはPHPにはもう一つ記述法があるみたいです。“`PHP
$shaman = array(“五条悟”, “七海健人”, “歌姫”);
“`
こちらはPHPのバージョン4.5以前で使われる記述の仕方みたい。
一つ目の配列の書き方は比較的新しい書き方らしいんやが、
近年のWebサーバーではほとんど使えるから記述が短くなるなら
一つ目の書き方がいいですね。Rubyの時と同じく配列には添字が0始まりで付与されているので
下記のように入力すると“`php
$shaman = [“五条悟”, “七海健人”, “歌姫”];
print($shaman[0]);
“`![
クライアントとサーバーでタイムゾーンを合わせる3つの方法
## 目次
1. あらかじめユーザー設定で登録したものをデータベースから取得する
2. フォームで選択させて送信する
3. JavaScriptで取得して送信する## あらかじめユーザー設定で登録したものをデータベースから取得する
ユーザー設定にタイムゾーンの設定を設け、ユーザーに紐付けて保存します。
Carbon::parse($request->date, $user->timezone)
PHPの場合は以下の関数で取得します。
timezone_identifiers_list(\DateTimeZone::ALL)
セレクトボックスを用意すると良いでしょう。
@foreach (timezone_identifiers_list(\DateTimeZone::ALL) as $timezone)@endforeach
## フォームで選択させて送信する
日時を送信するフォームにタイムゾーンの入力
Laravel入門メモ
#項目
1. アプリケーション用のディレクトリを作成
1. Webサーバの起動確認
1. `view`をいじってみる
1. DBとの接続設定
1. DBを操作する為の`モデル`,`コントローラ`,`マイグレーション`ファイルを作成
1. ルーティングの設定
1. DBから持ってきたデータをテンプレートへ送る
1. 特定のデータをDBから取得する#1. アプリケーション用のディレクトリを作成
作業ディレクトリ内にlaravelアプリケーション作成用のディレクトリを作成する。“`bash;
$ laravel new laravel_test
“`
これで配下に`laravel_test`が作成される。#2. Webサーバの起動確認
Webサーバが起動するか確認をして、laravelが正常に動いていることを確かめる。“`bash:
$ cd laravel_test
$ php artisan serve
“`#3. `view`をいじってみる
`resources/views/welcome.blade.php`が前項で表示されたテンプレート。
この中身をいじ関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた