- 投稿日:2020-03-10T23:52:08+09:00
【Laravel】assertSeeとassertSeeTextの違い
結論
assertSeeTextではHTMLタグをテストできません。
// HTMLタグ $response->assertSee('<title>タイトル</title>'); // OK $response->assertSeeText('<title>タイトル</title>'); // NG // テキスト $response->assertSee('タイトル'); // OK $response->assertSeeText('タイトル'); // OK彼らから見えている世界
assertSee
<li><a href="http://localhost">ホーム</a></li>\n <li><a href="http://localhost/terms">利用規約</a></li>\n <li><a href="http://localhost/tokutei">特定商取引法表示</a></li>\n <li><a href="http://localhost/privacy">プライバシーポリシー</a></li>assertSeeText
ホーム\n 利用規約\n 特定商取引法表示\n プライバシーポリシー\n余談
指定したビューが返されたことをテストする場合は
assertViewIsを使いましょう。
- 投稿日:2020-03-10T23:46:58+09:00
【Laravel】ajaxでPOST送信→Laravelでredirectできない
はじめに
表題の通りです。
やろうとしたこと
jQueryのajaxでPOST送信してデータを更新する。
こんな感じだとリダイレクトしてくれない。user.blade.php
$.ajax({ type: 'POST', url: "/user/update", data: {'name': 'hoge'}, headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } });UserController
return redirect('/detail');解決策
その1:ajaxではなくformを使う
上記の例だとボタンクリック⇨ajaxでpost通信だったので、Form::openを使ってsubmitさせる
user.blade.php
{{Form::open(['url' => 'user.update', 'method' => 'post'])}} <button type=“submit”>Click</button> {{ Form::close() }}その2:redirectをせずにajax側でリダイレクトの処理をする
user.blade.php
$.ajax({ type: 'POST', url: "/user/update", data: {'name': 'hoge'}, headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } }).done ({ location.href = “/detail”; });UserController.php
return response()->json([]);
- 投稿日:2020-03-10T22:00:18+09:00
Win10 + PHP + Laravel 開発環境構築メモ
概要
- Windows10にPHP開発環境を構築したときのメモです
- 後で見返す用に書きだしたレベルなので、内容は適宜修正します。
PHP(XAMMP)
- Apache, MariaDB, PHP, Perl などがパッケージ化されたもの
- https://www.apachefriends.org/jp/index.html
- 特定バージョンを入れる場合は「その他のバージョン~」から
- インストールした後はPATHを追加する
- 例) C:\xampp\php
composer
- PHPでの開発におけるライブラリの依存関係などを管理してくれるもの
- https://getcomposer.org/doc/00-intro.md#installation-windows
- DLは Composer-Setup.exe から
xdebug
- PHPでデバッグするための拡張モジュール
- https://xdebug.org/download
- 色々試行錯誤したけどうまくいかなかったので、最終的に以下の手順で導入した。
- コマンドプロンプトで
$ php -iをたたく- https://xdebug.org/wizard に[1]の内容を貼り付けて「Analyse my phpinfo() output」を押下
- 画面下部に表示される手順に従って操作していく
- [1]に戻り、再度 Analyze して Xdebug installed のところにバージョンが出てきたらOK
$ php -vの出力でも確認できる$ php -v PHP 7.4.3 (cli) (built: Feb 18 2020 17:29:46) ( ZTS Visual C++ 2017 x64 ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans ★ここが出力されたらOKphp.ini(参考)zend_extension = C:\xampp\php\ext\php_xdebug-2.9.2-7.4-vc15-x86_64.dll [xdebug] xdebug.remote_enable=1 xdebug.remote_autostart=1
- vscodeで
php -iしたとき色々エラーが出る場合は、
エラー箇所の extension= の後ろをフルパスにしていくとよい?
npm (node.js)
- node.jsです。
- https://nodejs.org/en/
- LTSの方入れておきました
VisualStudioCode
- Microsoft が提供しているコードエディタ
- https://azure.microsoft.com/ja-jp/products/visual-studio-code/
setting.json(追記する)"php.validate.executablePath": "C:\\xampp\\php\\php.exe", "php.suggest.basic": false,
- Extensions として以下を追加した。
- PHP Debug
- PHP IntelliSense
- PHP Class Generator
- PHP DocBlocker
- PHP import checker
- phpcs
- PHP Intelephense
- PHP Namespace Resolver
- Bracket Pair Colorizer
- VS Code Counter
サンプルプロジェクトで動作確認
$ composer create-project "laravel/laravel=6.*" sample$ cd sample$ php artisan -V$ composer install$ npm install$ php artisan serve- 任意の場所 (routes/web.php あたり?) にブレークポイントを置いて、デバッグ起動
launch.json(参考){ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "stopOnEntry": true, "log": true }, { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "${file}", "cwd": "${fileDirname}", "port": 9000, } ] }
- 投稿日:2020-03-10T20:46:46+09:00
nginxとphp-fpmを使ってLaravelのhome画面を表示する
前書き
初めての投稿ですので、わかりにくい箇所があるかもしれません。改善案などございましたら、教えてください。
nginxとphpのインストール
自分はMacを使っているので、今回はHomebrewを利用してインストールしていきます。
brew install php@(バージョンは各自指定してください) brew install nginxphp-fpmはbrewでphpをインストールすると同時にインストールされます。
インストールできたか確認
php -v nginx -vnginxとはなにか
nginxとはフリーでオープンなウェブサーバーで、主に静的なコンテンツを高速に配信するように設計されている
php-fpmとは
php-fpmとは、phpのFastCGI 実装のひとつで、主に高負荷のサイトで用意されている機能です。
そもそも、CGIとはwebサーバーで、PHPなどのプログラムを動かすための仕組みです。なぜnginxを使う時にphp-fpmが必要か?
上記にも書いた通り、nginxは静的ファイル(html/css/js)処理できません。なのでphp-fpmを利用します。
nginxを起動する
nginx (起動) nginx -s stop (停止) nginx -s reload (再読み込み)https://localhost:8080
にアクセスしてみてnginxの設定
nginxの編集は基本的にnginx.confに記述していきます。
nginx.confはどこにあるのか、/usr/local/etc/nginxにあリます。
nginx.confを開いてlocation / { root html; index index.html index.htm; } #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #}主にlocationというところを編集していきます。
自分の場合はDesktopに新たにindexディレクトリを作成し、その中にindex.phpを作成し、それを表示させました。nginx -tこのコマンドで、編集したnginx.confのシンタックスチェックしてみてください。
nginx.confの中身を編集した場合は、必ずnginxを再起動してください。location / { root /Users/username/Desktop/index/; index index.php index.html index.htm; } location ~ \.php$ { root /Users/username/Desktop/index/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /Users/username/Desktop/index/index.php$fastcgi_script_name; include fastcgi_params; }こんな感じで編集しました。
困ったことはnginxとDesktopの管理者権限が異なり、中々表示できませんでした。$chownこのコマンドでnginxのerror.logとaccess.logの実行者を変更しました。
php-fpmの編集
$brew info php@(自分のバージョン)これで、brewでインストールした、phpの情報が分かります。
php-fpmの編集ファイルはwww.confなので、その中身をuser = nginx group = nginxこのように編集しました。
$brew services start phpこのコマンドも忘れずに実行してください。
ちなみにDesktopのindexディレクトリのindex.phpの中身は
<?php phpinfo(); ?>としておきました。
Laravelを表示するには
nginx.confのrootを編集するだけです。
Laravelの処理の起点となるのは、publicディレクトリです。
Laravelで扱うWebページのルート部分はpublic/ディレクトリになります。このことを理解していれば簡単です。root /Users/username/Desktop/projectname/public/;この画面が出れば完了です。
- 投稿日:2020-03-10T19:26:04+09:00
【Laravel】知らず知らず地雷踏んで死んだ話。
なんの地雷???
php artisan config:cacheキャッシュクリア系のコマンドでよく見るこれ。
これを実行してしまったことによって、env()でnullしか返さなくなってしまった。いつ気づいた?
元々、config/app.phpに記述している内容が反映されてなかったので、上記のコマンドを使用して反映させるために使った。しかし、使用後すぐローカルのサーバーを落として、再度立ち上げようとすると問題発生。
php artisan serve PHP Warning: A non-numeric value encountered in /Users/shiga1/git/training_customer_app/config/app.php on line 16 Warning: A non-numeric value encountered in /Users/shiga1/git/training_customer_app/config/app.php on line 16 In ProviderRepository.php line 208: Class name must be a valid object or a stringはじめは全く意味がわからなかったので、調べてみると使用したコマンドがおかしく、実行する前の状態に戻したかったがよく分からず。。。
今後
実行前に軽く、どんなコマンドなのか調べておく。
幸い、ローカルだったので新しいプロジェクト立ててそこに移動させる。
- 投稿日:2020-03-10T18:51:48+09:00
LaravelでCookieのSameSite属性を設定する
chromeアップデートでcookieに新しくSameSite属性が追加
SameSite属性の目的
今開いているページのドメインから、別のドメインにリクエストを送る際に、cookieをセットするかどうかを制御。
SameSite属性の種類
Strict
- cookieをセットしない
Lax (デフォルト)
- SameSite属性の指定がない場合、扱われる。
- サーバーとCookieのドメインが同じでもcookieをセットしない場合がある。(POSTメソッド、imgタグ、XMLHttpRequests等)
- トップレベルナビゲーションであるもの、かつ、getリクエストであるものにcookieをセットする。
- トップレベルナビゲーションとは・・・ ナビゲーションのためにアドレスバーのURLが変更されること。
None
- cookieをセットする(secure属性を有効する必要がある。)
SameSite属性のポイント
- SameSite 属性が指定されていない場合、デフォルトでcookieを「SameSite = Lax」として扱うようになる
- SameSite = Noneが指定されてる場合、secure属性を有効にしていないとエラーを返す
多くの人がLux設定にするだろうからもう少しわかりやすく
調べてみたら、リクエストタイプ別にCookie送信の可否を書いている人がいたので引用させてもらいます
引用元の記事
リクエストタイプ コード Cookie送信 Link a href="…" ◯ Pererender link rel="prerender" href="…" ◯ Form GET form method="get" action="…" ◯ Form POST form method="post" action="…" × iframe iframe src="…" × AJAX $.get('…') × Image img src="…" × 設定方法
src/config/session.phpを修正
src/config/session.php'same_site' => null,
- 投稿日:2020-03-10T16:56:10+09:00
Laravelのインストール後の設定
概要
前回記事でmacOSにインストールしたLarvelの設定を行う
設定
ローカリゼーション
タイムゾーン(時刻設定)とロケール(地域、言語設定)、フェイカー(ダミーデータ言語)を日本に変更。
作成したプロジェクトフォルダ配下のconfigフォルダに、設定ファイル app.php があります。timezoneで検索(70行目)、値を Asia/Tokyo へ、続くブロックにある local の値を ja へ、 faker_locale は ja_JP へ変更。
config/app.php'timezone' => 'Asia/Tokyo', 'locale' => 'ja', 'faker_locale' => 'ja_JP',データベース
データベースを使わない場合は不要ですが、使う場合はローカルにインストールするか仮想サーバをインストールします。Laravelでは、前者はMac用のValet、後者はHomesteadが用意されています。今回は軽量で動作するValet(ベレット)を使います。
Valetインストール
公式サイト
https://readouble.com/laravel/6.x/ja/valet.htmlLaravelをインストールしたディレクトリにて、Composerを使って実行
(artisanでローカルサーバを起動している場合は停止しておきます)$ composer global require laravel/valet $ valet installメッセージ確認
Valet installed successfully!ping確認
任意のxxx.testにpingを打つと127.0.0.1から応答確認その他
他のドメインの使用
デフォルトでValetは.test TLDをプロジェクトのドメインとして処理します。他のドメインを使いたい場合、valet tld tld-nameコマンドを使ってください。
たとえば、.testの代わりに.appを使用したければ、valet tld appと実行します。Valetは *.appをプロジェクトのために自動的に使い始めます。MySQLインストール
Homebrewを用いてインストール
$ brew install mysql@5.7インストール後、起動
$ brew services start mysql@5.7 ==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)その他
PHPバージョン
Valetではvalet use php@versionコマンドにより、PHPバージョンを変更できます。指定されたPHPバージョンがインストールされていない場合、ValetはBrewによりインストールします。
valet use php@7.2
valet use php
Note: 複数のPHPバージョンをインストールしている場合でも、Valetは一度に一つのPHPバージョンのみを提供します。インストレーションのリセット
Valetインストレーションが正しく動作せずに問題が起きた時は、composer global updateの後に、valet installを実行してください。これによりインストール済みのValetがリセットされ、さまざまな問題が解決されます。稀にValetを「ハードリセット」する必要がある場合もあり、その場合はvalet installの前にvalet uninstall --forceを実行してください。
アップグレード
Valetインストールをアップデートするには、ターミナルでcomposer global updateコマンドを実行します。アップグレードできたら、valet installコマンドを実行し、必要な設定ファイルの追加アップグレードを行うのは、グッドプラクティスです。
サイト動作確認
ディレクトリを作成し、parkコマンド実行
$ mkdir ~/DIR $ cd DIR/ $ valet parkLaravelサイトを作成
$ laravel new blogブラウザから http://blog.test を開く
必要なのはこれだけです。 これで"parked"ディレクトリ内に作成されたLaravelプロジェクトは、http://フォルダ名.test規約に従い、自動的に動作します。
前回と同様サイトが表示されればOKです。
Valetの停止
起動したサービスを停止する場合
$ valet stopMySQL$ /usr/local/opt/mysql@5.7/bin/mysql.server stop
- 投稿日:2020-03-10T16:10:18+09:00
XAMPPを使って、Windows環境にLaravelをインストールしてみた!
はじめに
ふとしたきっかけで、Laravelの環境が必要となりましたので、備忘録として、Laravelのインストール手順を纏めてみました。
Laravelとは?
『ウェブ職人のためのPHPフレームワーク』。響きがいいですね。使ってみるが一番なので、インストールから始めたいと思います。
手順として、3stepsありますので、step by stepで進めて行きたいと思います。
Step1.PHP環境の導入 (XAMPP)
Step2.Composeのインストール
Step3.LaravelのインストールStep1.PHP環境の導入 (XAMPP)
1-1.XAMPP公式ページにアクセスして、[Windows向けXAMPP]をクリック。
https://www.apachefriends.org/jp/index.html
1-2.ユーザーアカウント制御のポップアップが表示されますので、[はい]をクリック。
1-3.bitnamiが表示されて、インストールが続きます。
1-4.UACの警告が表示されますが、[OK]をクリック
C:\Program Filesへのインストールを止めてください。もしくは、UACを無効にしてくださいとの警告となります。後の手順で、インストールフォルダを選択できるので、その時にC:\Program files以外を選択することになります。
1-5.[Next]をクリック。
1-6.インストールするコンポーネントを選択して、[Next]をクリック。(今回は、すべてのコンポーネントを選択しております。)
1-7.インストールフォルダを入力して、[Next]をクリック。
(私のPC環境では、C:\の空きがないので、D:\へインストールしております。)1-8.[Next]をクリック。
1-9.[Next]をクリック。
1-10.インストールが始まります。
1-11.[Finish]をクリック。
1-12.英語 Or ドイツ語のどちらかを選択し、「Save」をクリック。
1-13.XAMPPのコントロールパネルが表示されれば、インストール完了です。
これにて、Step1:PHP環境の準備は完了となります。
Step2.Composerのインストール
2-1.composer公式ページにアクセスして、[Download]をクリック。
2-2.[Composer-Setup.exe]をクリック
2-3.『Composer-Setup.exe』がダウンロードされますので、ファイルを実行。
2-4.[Next]をクリック。
2-5.Step1でインストールしたXAMPP配下にあるphp.exeを選択して、[Next]をクリック。
2-6.プロキシ環境がある場合には、プロキシ設定を適宜入力して、利用しない場合は、[Next]をクリック。
2-7.[Install]をクリック。特にエラーが無ければ、インストール完了となります。
これにて、Step2のComposerのインストールは完了です。
Step3.Laravelのインストール
3-1.Laravelをインストールしたいディレクトリに移動して、composerとPHPのPathが通っている事を確認する。(私の場合は、XAMPP配下にインストール致します。)
Pathが通っていない場合は、Pathの追加をお願い致します。3-2.composerコマンドに create-projectオプションを指定してSampleのプロジェクトを作成します。
#composer create-project laravel/laravel --prefer-dist Sample3-3.Application key set successfullyが表示されれば、インストールが完了です。(約、5分くらいかかりますので、気長にお待ちください!!)
3-4.Sampleフォルダに移動して、下記コマンドを実行するとhttp://localhost:8000 startedとなりますので、Laravelがブラウザで確認可能となります。
#php -S localhost:8000 -t public3-5.http://localhost:8000 にアクセスするとLaravelのページが表示されます。
コンソール画面に下記が表示されます。
これにて、step3:Laravelのインストールは完了となります。
まとめ
Laravelのインストール手順は、いかがでしたでしょうか?
手間はかかりますが、Step by Stepで進めていけば、インストール可能となります。
Laravelのインストール自体に5分位、待ちがありますが、、最後に、私の記事が少しでも皆様のお役に立てれば、幸いでございます。
- 投稿日:2020-03-10T14:45:06+09:00
Laravelのコア1つを、複数サブドメインを作ったエックスサーバーで駆動させる
概要
筆者以前から実験してみたかったのですが、エックスサーバーのサブドメインで、マルチサイトを作れるCMSを構築したい。
個人的にエックスサーバーが好きなんです。すみません。使い道は、
・テンプレートタイプのLPやホームページの運用
・通販サイトそんな感じかなぁと。
私は、単純に日々の業務を合理化したいのが目的です。設定
config/app.php
config/app.php に記述されている urlは 標準だと.envから設定値を読み取り設定しています。
動的に設定したいので、PHPで記述しておきます。
テンプレートで {{ulr('/xxx')}} を使いたい時など設定しておくと便利かと。
.envのAPP_URLは、使っているドメインでも入れておけば良いかと。使われませんので。//'url' => env('APP_URL', 'http://localhost'), 'url' => empty($_SERVER["HTTPS"]) ? "http://" : "https://" . $_SERVER["HTTP_HOST"],public_html/{subdomain}/
エックスサーバーでサブドメインを作成すると、ドメインの手前の部分はフォルダでpublic_htmlの直下に作成されてきて、そのフォルダがサブドメインのルートディレクトリになりますよね。
サブドメインのルートに標準で作成されているpublicフォルダのデータをコピーします。
ただ、階層が1つ深く沈むのでindex.phpを少々編集が必要です。
autoload.phpとbootstrap/app.php'の相対パス(../)をそれぞれ1つ増やします。/** * Laravel - A PHP Framework For Web Artisans * * @package Laravel * @author Taylor Otwell <taylor@laravel.com> */ define('LARAVEL_START', microtime(true)); /* |-------------------------------------------------------------------------- | Register The Auto Loader |-------------------------------------------------------------------------- | | Composer provides a convenient, automatically generated class loader for | our application. We just need to utilize it! We'll simply require it | into the script here so that we don't have to worry about manual | loading any of our classes later on. It feels great to relax. | */ require __DIR__.'/../../vendor/autoload.php'; /* |-------------------------------------------------------------------------- | Turn On The Lights |-------------------------------------------------------------------------- | | We need to illuminate PHP development, so let us turn on the lights. | This bootstraps the framework and gets it ready for use, then it | will load up this application so that we can run it and send | the responses back to the browser and delight our users. | */ $app = require_once __DIR__.'/../../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);routes/web.php
ここについては、マニュアル通りに設定してみます。
(公式マニュアル)
https://laravel.com/docs/6.x/routing#route-group-subdomain-routinguse Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::domain('{subdomain}.yourdomain.com')->group(function () { Route::get('/', function ($subdomain) { //ビュー渡し return view('welcome',['subdomain'=>$subdomain]); }); //コントローラ渡し Route::get('/', 'Controller@index'); });/** * コントローラ渡しの時は、引数がこれで渡ります * * @return \Illuminate\Http\Response */ public function index(Request $request, $subdomain) { return view('welcome', [ 'subdomain'=> $subdomain ]); }https://subdomain.yourdomain.com
所定のURLを開いてみると、welcomeテンプレートには、subdomainの変数が取れるようになります。
あとは、このsubdomainを引数として使って、コントローラやモデルを組んでいけば、
マルチサイトの構築は、いつも通りに作っていけば、できそうですね。
なかなか面白いと思います。
比較的簡単なので興味ある方は一度試してみてわ。
でわでわ。
- 投稿日:2020-03-10T12:24:31+09:00
外部キーエラーが出た人へ「SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint」
要因
mysqlにてテーブルを外部キーとして連携したときに起こったエラーです。
エラー
php artisan migrateで下記エラー内容
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `comments` add constraint `comments_ico_id_foreign` foreign key (`ico_id`) references `icos` (`id`) on delete cascade)解決方法
migrateファイルの生成の順番に問題がありました。
外部キー設定をさせるcomments_tableより後に紐づけたいテーブルであるico_tableがありました。
なので名前を変更してcomments_tableより前に持ってきてphp artisan migrateで治りました。
治ったー!
[vagrant@localhost myblog]$ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (0.02 seconds) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds) Migrating: 2019_12_05_215839_create_posts_table Migrated: 2019_12_05_215839_create_posts_table (0.01 seconds) Migrating: 2019_12_22_211023_create_icos_table Migrated: 2019_12_22_211023_create_icos_table (0.02 seconds) Migrating: 2019_12_23_071756_create_comments_table Migrated: 2019_12_23_071756_create_comments_table (0.04 seconds) Migrating: 2020_01_12_020348_tests_migrate_table Migrated: 2020_01_12_020348_tests_migrate_table (0 seconds)
- 投稿日:2020-03-10T12:17:44+09:00
【laravel】AWSでhttps化したはずなのに一部のページだけhttpになる
今回の騒動
AWSにてhttps化したのに本番環境に以降したら一部のページだけhttp表示となり、かなり困っていたので解消方法を共有します。
前提
環境はlaravel5.8です。
バージョンによっていろいろ違うみたいなのでそこは注意です。解消方法
App\Http\Middleware\TrustProxiesに
protected $proxies = '**';を入れるだけ実例
TrustProxies<?php namespace App\Http\Middleware; use Illuminate\Http\Request; use Fideloper\Proxy\TrustProxies as Middleware; class TrustProxies extends Middleware { /** * The trusted proxies for this application. * * @var array|string */ // protected $proxies; // protected $proxies = [ // '172.31.36.97/16', // ]; protected $proxies = '**'; //付け加えた /** * The headers that should be used to detect proxies. * * @var int */ protected $headers = Request::HEADER_X_FORWARDED_ALL; }laravel公式マニュアルを参照しました。
https://readouble.com/laravel/5.5/ja/requests.html#configuring-trusted-proxies
- 投稿日:2020-03-10T10:44:36+09:00
LaravelをMacにインストールしてみよう!
LaravelをMacにインストールしてみよう!
概要
macOSにローカル開発環境としてLaravelをインストール
公式サイト
https://readouble.com/laravel/6.x/ja/installation.html前提
■環境
macOS HighSierra 10.13.16
Homebrew 2.2.9
Composer 1.9.3
PHP 7.4.3
Laravel 7.0.8■インストール済みソフト
Homebrew(macOS用パッケージマネージャー)
>日本語サイト:Homebrew
>インストール参考記事:Homebrew使い方まとめ準備
■Composerインストール
PHP用ライブラリ依存管理ツールをインストール$ brew install composer>参考記事:PHPのライブラリ管理ツール「Composer」入門
インストール
■laraverlインストール
Composerを使ってインストール$ composer global require "laravel/installer"PATHを通す
~/.bash_profile または ~/.bashrc にパスを追加(お使いの設定により)
~/.bash_profileexport PATH=$PATH:/usr/local/bin:$HOME/.composer/vendor/binパス確認(値は環境依存)
$ echo $PATH usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin設定反映
$ source .bash_profileパス確認
$ echo $PATH usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/{ユーザー名}/.composer/vendor/bin末尾に
:/Users/{ユーザー名}/.composer/vendor/binが追加されていることを確認プロジェクト作成
$ laravel new {任意のプロジェクト名}成功のメッセージを確認
Package manifest generated successfully. Application ready! Build something amazing.動作確認 作成したプロジェクトに移動してartisanでバージョン確認&サーバを起動
$ cd PROJECT $ php artisan --version Laravel Framework 7.0.8 $ php artisan serve Laravel development server started: http://127.0.0.1:8000以上です。
参考記事
Mac OSにLaravelローカル開発環境構築
https://qiita.com/da-sugi/items/7ee7a458aad4209bab01Mac OSにLaravel 5.7を導入する方法
https://qiita.com/nemui_/items/a62637a6aa173cbb8b09
- 投稿日:2020-03-10T10:16:46+09:00
【laradock】macでの環境構築
【laradock】macでの環境構築
laradockで環境構築をする基本的流れです。
事前に必要なインストール
- git
- homebrew
- Docker
laradockのインストール
dockerで環境構築するフォルダの作成
laradockのインストール$ mkdir laravel_docker && cd laravel_docker $ mkdir project01 && cd project01 $ git clone https://github.com/Laradock/laradock.git.envファイルの作成
.envファイルはlaradockの設定ファイル
$ cd laradock $ cp env-example .envlaradockの設定ファイルの編集(.env)
nginxの設定
### NGINX ################################################# - NGINX_HOST_HTTP_PORT=80 + NGINX_HOST_HTTP_PORT=8888 NGINX_HOST_HTTPS_PORT=443 NGINX_HOST_LOG_PATH=./logs/nginx/ NGINX_SITES_PATH=./nginx/sites/ NGINX_PHP_UPSTREAM_CONTAINER=php-fpm NGINX_PHP_UPSTREAM_PORT=9000 NGINX_SSL_PATH=./nginx/ssl/mysqlを使用する場合の設定
### MYSQL ################################################# - MYSQL_VERSION=latest + MYSQL_VERSION=5.7 MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.dコンテナの作成
$ docker-compose up -d nginx Recreating laradock_docker-in-docker_1 ... done Recreating laradock_workspace_1 ... done Recreating laradock_php-fpm_1 ... done Recreating laradock_nginx_1 ... doneworkspaceにログイン
$ docker-compose exec --user=laradock workspace /bin/bash laradock@a651667e1cfc:/var/www$composerを使って、インストール
laradock@a651667e1cfc:/var/www$ composer create-project laravel/laravel="5.8" myapplaradockの.envファイルの編集
# Point to the path of your applications code on your host - APP_CODE_PATH_HOST=../ + APP_CODE_PATH_HOST=../myappmyappのデータベースを設定する(.envファイルを編集)
mysqlを使用する場合
変更前 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret 変更後 DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=default DB_USERNAME=root DB_PASSWORD=rootsqliteを使用する場合
変更前 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret 変更後 DB_CONNECTION=sqliteブラウザから確認する
以下にアクセスしてlaravelが表示されていれば、成功です。
お疲れ様でした。
- 投稿日:2020-03-10T02:56:41+09:00
【Laravel】カスタムディレクティブを定義し、タイトル補完処理をviewから呼び出す
環境
- Laravel Framework 6.14.0
やりたいこと
以下Railsチュートリアルのように、タイトル補完用のメソッドを定義しviewから直接呼び出したい。
https://railstutorial.jp/chapters/rails_flavored_ruby?version=5.1#sec-custom_helpers<title><%= full_title(yield(:title)) %></title>事前調査
公式ドキュメントによると、カスタムディレクティブを定義すればいけそうです。
処理に変更があった場合、キャッシュの削除が必要みたいです。面倒くさいですね。Blade拡張
https://readouble.com/laravel/6.x/ja/blade.html#extending-bladeBladeではdirectiveメソッドを使い、自分のカスタムディレクティブを定義できます。Bladeコンパイラがそのカスタムディレクティブを見つけると、そのディレクティブに渡される引数をコールバックへの引数として呼び出します。
Note: Bladeディレクティブのロジックを更新した後に、Bladeビューのキャッシュを全部削除する必要があります。view:clear Artisanコマンドで、キャッシュされているBladeビューを削除できます。
実装
full_titleディレクティブを定義します。
引数が無い場合はサイト名をそのまま返し、引数がある場合は「hoge | サイト名」の形式で返します。
どうやらPHPタグを返さなきゃいけないようなのでそうします。
(参考: https://www.slideshare.net/ShoheiOkada/laravel-blade-107130164 )app/Providers/AppServiceProvider.phpuse Illuminate\Support\Facades\Blade; Blade::directive('full_title', function ($title) { if ($title === "") { return "<?php echo 'サイト名'; ?>"; } return "<?php echo $title.' | サイト名'; ?>"; });一応、ロジックを更新(追加)したのでビューのキャッシュを削除します。
$ php artisan view:clearビューからよしなに呼び出します。
@section('title') @full_title('タイトル') @endsection引数なしでも動きました。
@section('title') @full_title() @endsection動的な値を渡したいときはこんな感じ。
@section('title') @full_title($item->id) @endsection

































