1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravelノート

Posted at

#実行環境
MAMP

#環境構築

  1. composerをinstall
  2. composerを使ってlaravelをinstall
  3. laravelにpathを通す

#基本的なコマンド
##プロジェクトを作成する

laravel new プロジェクト名

こっちはlaravelのコマンドを利用している
または

composer create-project Laravel/laravel プロジェクト名 --prefer-dist

こっちはcomposer経由
--prefer-dist はzip形式でダウンロードするから高速らしい
defaultでは --prefer-source でこっちは git clone でソースを落としてくるらしい

##アプリケーションの実行

cd laravelapp   //laravelプロジェクトに移動
mamp-php artisan serve

今の環境ではMAMPのPHPはmamp-phpでpathを通してある。alias使って。
これを実行したら、 http://localhost:8000 にアクセス。
これでトップページが表示されているはず。

これはPHPのビルトインサーバー機能を利用して実行している。
しかしあくまで動作確認用であり、本格的な運用に適したものではない。
ただこれを書いているのがだいぶ事後なんで、エラー出たら解決して。

#ルーティング
ルーティングとは特定のアドレスにアクセスしたとき、どの処理を呼び出すかを管理するための機能。
Laravelでは基本的にappフォルダ配下にプログラムを追加編集していく。

Route::get('アドレス'/{パラメータ?}, function(&パラメータ = 'デフォルト'){ 
    return view('テンプレート名');
});

第一引数はアドレス。
アドレスの後に{}で括ることでパラメータを受け渡すことができる。
このパラメータには必須パラメータと任意パラメータがある。
任意パラメータの時は上記のように、パラメータの後に?をつけ、関数でデフォルト値を設定しておく。
第二引数はクロージャまたは次章で説明するコントローラーの関数を以下のように指定。

Route::get('アドレス', 'コントローラ名@アクション名')

viewという関数はテンプレートファイルをロードしレンダリングして返す。
テンプレートファイルはviewフォルダの "テンプレート名.blade.php"

##ヒアドキュメント

$html = <<<EOF
<html>
</html>
EOF;

長文を変数に格納することができる。

#コントローラー
Laravelの特徴としてMVCアーキテクチャというものがあり、そのひとつがコントローラ。
全体の制御を担当する。
必要に応じてModelを使ってデータを取得したり、Viewを使って画面表示を作成したりする。

##コントローラの作成

mamp-php artisan make:controller コントローラ名

コントローラは、app/Http/Controllersに作成される。
コントローラはControllerクラスを継承したクラスで定義され、アクションと呼ばれる関数を保持する。

##アクションとアドレスの関係
http://アプリケーションのアドレス/コントローラ/アクション
というのが一般的

##シングルアクションコントローラ
1つのコントローラに1つのアクションしか存在しないもの。
唯一のアクション名は、__invoke()として定義する。
ルーティングのgetメソッドの第二引数にはコントローラ名だけの記述で良い。

##Request, Response

  • use を使ってuse Illuminate\Http\Request or Response
  • アクションの引数にも Request, Response 追加

###メソッド

  • $request -> url() : アクセスしたurlを返す。

  • $request -> fullUrl() : アクセスしたアドレスを完全な形で返す。(クエリ文字も)

  • $request -> path() : ドメイン下のパスだけ返す。

  • $this -> status() : アクセスに関するステータスコードを返す。

  • $this -> content() : コンテンツを取得する。

  • $this -> setContent(値) : 引数の値にコンテンツを変更する。

###詳しい内容
[【PHP超入門】HTTP(GET・POST)について]
(https://qiita.com/7968/items/4bf4d6f28284146c288f)
[【[PHP] リクエストパラメータ・セッションに関するまとめ]
(https://qiita.com/mpyw/items/7852213f478e8c5a2802)
[【PHP超入門】Cookieとセッションについて]
(https://qiita.com/7968/items/ce03feb17c8eaa6e4672)

#ビュー
Laravelではレンダリングは以下のテンプレートエンジンによって行われる。

  • PHPのソースコード
  • Blade

##PHPテンプレート

  • テンプレートファイルは、resources/views の中
  • テンプレートは、各コントローラごとにフォルダを用意し、その中にそのコントローラーで使うテンプレートをまとめておくのが一般的。
  • ルートの設定またはコントローラーのアクション中でreturn view(フォルダ名.ファイル名);とする。
    テンプレートはviwesフォルダから検索される。

###変数の渡し方

ルートパラメータを使う場合


public function index()($id='zero'){
    $data = ['msg' => 'ベクトル解析'
             'id' => &id]
    return view('hello.index', $data)
}

クエリ文字列を使う場合


public function index()(Request $request){
    $data = ['msg' => 'ベクトル解析'
             'id' => $request -> &id]
    return view('hello.index', $data)
}

*ちなみに=>(ダブルアロー)は連想配列に値を代入するときに使う

#Bladeテンプレートを使う

  • PHPテンプレートでは<?php echo $msg; ?>と書いていたが、
    Bladeテンプレートでは、 {{$msg}}とかける。

  * {{ }}はHTMLエスケープしてあるから、そうさせたくないときには{!! !!}と書く
  
#Bladeの構文
Laravel 5.5 Bladeテンプレート を参照

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?