【エラー備忘録】laravelのpathを通す

ターミナル
$composer global require "laravel/installer"
でインストールしたのち、バージョン確認をしようとすると
$ laravel -v
-bash: laravel: command not found: laravel
と、Laravelコマンドを使用するためのPATHが通っていないと示される。
 
そこでターミナルに
$ export PATH=$HOME/.composer/vendor/bin:$PATH
と打ち込み、さらに
$ source ~/.bash_profile
と打ち込んで変更を反映させる。
 
これでpathを通す設定ができた。
 
 
 
laravelの新規アプリケーションを作成する方法も記録しておく。
 
まずはLaravelアプリケーション用のローカルディレクトリを作り、そのディレクトリに移動する。
ここではlaravelstudyというディレクトリを作成する。
$ mkdir laravelstudy
$ cd laravelstudy
 
laravel newに続けて任意のアプリケーション名を書き、実行。
ここではlaravel_sampleというプロジェクト名をつける。
$ laravel new laravel_sample
 
Application ready! Build something amazing.
と出たら、アプリケーション作成の完了となる。

【エラー備忘録】ターミナル  Checking for `sudo` access (which may request your password). Password:

・内容
ターミナルに以下の文言。
Checking for `sudo` access (which may request your password). Password:
 
 
・意味
macを立ち上げる時のパスワードを要求されている
 
 
・解決法
ターミナルにパスワードを入力する。
※入力しても表示されないようになっているが、入力してreturnキーを押せばOK

【Laravel】viewで表示の処理を分ける

viewファイルの作成

MVCモデルを採用したフレームワークでは、ルーティングの処理と見た目を作るビューの処理を分ける。

 

 

 

bladeとは

laravelのviewファイルが採用している、テンプレートエンジン。

  • Laravelのビュー作成にはBladeテンプレートエンジンが使われる。結果Bladeビューとなる。
  • ビューの中にPHPを直接記述できる。
  • Laravelのビューはresources/viewsディレクトリにある。
  • 拡張子は.blade.phpとなる。

 

 

viewを呼び出す

ルーティングにより呼び出すviewを指定する。

view(' ファイル名 ') のように、.blade.php以前のファイル名のみ記述する。

 

Route::get('/blog/' , function(){

   return view(' ファイル名 ');

});

 

 

変数を渡す

 例:変数に合わせてviewの表示内容を変えたい場合

Route::get('/archives/{category}/',function($category){
    return view('category', ['category'=>$category]);
});

functionに渡っている$categoryという変数を、viewにも渡さなければいけない。

そこでview( )内にパラメーターを2つ渡す。

['category'=>$category] ※同じ名前にすることが多い。

このように記述することで$categoryという変数がviewに渡る。

 

その上でviewに$categoryを組み込む。

category.blade.phpファイル

<body>
    <p><?php echo $category;?>のリスト</p>
</body>

これで$categoryを出力できるが、テンプレートエンジンに従った記述をしたほうがベター。PHPを知らない人にもviewファイルを見やすくする。

bladeでは以下のように記述する。

<body>
    <p>{{ $category }}のリスト</p>
</body>
 
 
if構文の例
<body>
    <p>{{ $category }}のリスト</p>  

    @if ($category == 'news')
        <p>本日のニュースを配信します</p>
    @endif
</body>

【Laravel】routeでURLを操る

routeとは

ルート=経路のこと。

 

ユーザから「〇〇のページが見たい!」というリクエストを受け取ったら、「〇〇の処理を実行する」と言ったような一連の経路を決めるのがルーティングの役割。

 

routesフォルダ内のweb.phpにルートを定義する。

このファイルを見れば、どのURLでどの処理が行われるのかがわかる。

 

 

ルーティングの文法

 

構文

Route::HTTPリクエスト($url, $callback);

 

解説

・HTTPリクエスト…get,post,put,deleteを指定する。

・$url…ホスト以下のパスを指定する。

・$callback実行したい処理を記述する。

 

 

例文1

Route::get('hello', function() {

  return 'Hello World';

} );

 

解説

・HTTPリクエスト…getリクエストにより、URLを指定して直接呼び出す。

・$url…http://localhost:8000/helloにアクセスしたいので、/helloを指定する。

・$callback… 「Hello World」 を返す関数を指定する。

 

 

例文2

Route::get('posts/{id}', function ($id) {

    return $id.'番の記事';

});

 

解説

(idが10とすると)

・$url…http://localhost:8000/posts/10にアクセスする。

・$callback…「10番の記事」 と出力される。

 

 

viewファイルを指定する

 

例文3

Route::get( ' / ', function() {

  return view( ' Welcome ' ) ;

} );

 

解説

 return view( ' Welcome ' ) ; とすると、

viewsフォルダ内の「welcom.blade.php」というファイルを呼び出す。

 

※laravelをダウンロードすると、デフォルトで例3のルーティングが記述されており、laravelトップ画面を呼び出すようになっている。

【Laravel】composerで開発環境を作る

【Laravel】MVCモデルとは

MVCモデルとは
Webフレームワークで一般的に取り入れられている、アプリケーションの設計モデルのひとつ。
 
・モデル(Model)…データ処理をしたり、データをDBへ保存したりする。
・ビュー(View)…ユーザーが見る画面を表示する。
・コントローラー(Controller)…ビューとモデルの制御を担当。ユーザーからの入力に対し、モデルへ処理の依頼をしたり、ビューへユーザーへの表示内容を依頼したりする。
 
この3つのの頭文字を取って「MVC」という。
 
 
 
モデル(Model)
・機能
データベースとデータのやり取りを行う機能を実装する。
データベースから取得したデータを、プログラムで扱いやすい形式に変換する。
DBへデータを保存する。
DBからデータを取得して、コントローラーへ送る。
コントローラーからレスポンスを受け取る。
 
 Controller ⇔ Model ⇔ DB
 
 
 
ビュー(View)
・機能
ユーザーから受け取ったリクエストをコントローラーへ送る。
コントローラーから受け取ったデータ(レスポンス)を画面に表示する。
 
 View ⇔ Controller
 
 
 
コントローラー(Controller)
・機能
ビューとモデルを操作する部分であり、ビューとモデルの仲介者。
ビューからリクエストを受け取り、モデルへ処理の命令を出す。
モデルから処理の結果を受け取り、レスポンスとしてビューへ返す。
 
 View ⇔ Controller ⇔ Model
 
 
 
MVCモデルのメリット
・機能を分割することで独立性が高くなる。
・MVCで分割されているため、開発が効率的に行える。
・単体でも独立性が高く、再利用ができる。
・独立性が高く専門性に特化しているため、バグ修正やトラブルに柔軟に対応できる。

【エラー備忘録】Windowsでcomposerを使ったときのエラー(fileinfo extension)

コマンドプロンプトで、composerを使ってlaravelのprojectを作ろうとしたところ、以下のようなエラーになった。
 
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/framework[v8.12.0, ..., 8.x-dev] require league/flysystem ^1.1 -> satisfiable by league/flysystem[1.1.0, ..., 1.x-dev].
- league/flysystem[1.1.0, ..., 1.x-dev] require ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
- Root composer.json requires laravel/framework ^8.12 -> satisfiable by laravel/framework[v8.12.0, ..., 8.x-dev].
To enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
 
「require ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension. 」
のあたりに注目。fileinfo extensionをインストールするか拡張するよう言われている。
 
さらに最後に「To enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini」とあるので、 php.iniというファイル内でfileinfo extensionを検索してみる。
 
すると「;extension=fileinfo 」が見つかった。
先頭のセミコロン(コメントアウト)を削除して有効とすることで、エラーは解決した。