LoginSignup
9
16

More than 5 years have passed since last update.

Laravel基礎(1)ルーティングとビュー

Last updated at Posted at 2018-10-14

ここではLaravelの環境設定後、初めてLaravelを学ぶ人向けに説明します。

プロジェクト作成

laravel newによりプロジェクトを作成します。プロジェクト名は自由ですが、これから作るWebサービスの内容が分かる命名をします。(今回は勉強用でdemoで始まる命名にしています)

laravel new demoApp
cd demoApp

コマンド投入後出来上がるディレクトリに移動し、内容を確認します。

app・・・・・・Webアプリケーションのプログラム本体の置き場所。開発はここが中心。
bootstrap・・・起動の最初に行われる処理が入っている。
database・・・データベース関連のファイルが入っている。
resources・・・ビュー(Blade)など画面に関するファイルが入っている。開発はここも対象。
tests・・・・・ユニットテストに関するファイルが入っている。
config・・・・・設定に関するファイルが入っている。
public・・・・・JS/CSSなどのWeb公開ファイルが入っている。
routes・・・・・どの処理を呼び出すかのルーティング情報が入っている。開発はここも対象。
storage・・・・一時ファイルやログが置かれる場所。
vendor・・・・フレームワーク本体や他のパッケージの置き場所。

appの中はさらに下記のようなフォルダがあります。

Console・・・コンソールプログラムの置き場所。
Exceptions・・エラー発生時の処理を行うプログラムの置き場所。
Http・・・・・Webアプリの処理を行うプログラムの置き場所。(開発対象)
Providers・・・各種の処理を提供するサービスプロバイダーのプログラムの置き場所。

なお、開発中のアプリケーションのサーバ起動は

php artisan serve --port 8080

です。ポート番号はデフォルトでは8000です。Cloud9の環境ではセキュリティの関係でポート番号を8080にする必要があります。ご注意ください。
ちなみにartisanはフランス語で「職人」という意味で、多分、アーチサンと読みます。Laravelの定番コマンドと覚えておいてください。

最初にやることとしてアプリケーションのタイムゾーンやロケール(言語設定)で、次のように設定します。

config/app.php
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',

ルーティング

ルーティングはURLアドレスに対しどの処理を呼び出すかの道すじを決めています。
具体的にはroutes/web.phpを下記のように書いて動きを確認してみましょう。

routes/web.php
Route::get('/', function () {
    return "This is demoApp";
//    return view('welcome');
});

サーバを起動し、ブラウザで確認すると、画面にdemoAppと表示されたと思います。

つまりRoute::getメソッドを使って

Route::get(URLアドレス , 表示する処理)

と書くことで、アドレスからどの処理を呼ぶかのルーティングを定義しています。
(GETというHTTP通信要求でURLに対して、返すべき内容を決めています)

デフォルトで記述されていたコードのRoute::getメソッドの第二引数は
function () {
return view('welcome');
}

でしたが、これは名前のない関数を定義してその場でviewを呼び出してHTMLを返しています。
実は、'welcome'は、
resources/views/welcome.blade.php
というBlade(ブレード。Laravelのビューを作るためのテンプレートファイル)を指しています。

GETパラメータの受け取り

HTTP通信のGETはブラウザから要求されるアドレスにパラメータを埋め込んでサーバサイドで受け取ることができます。
ルーティング情報の中でアドレス/a/○○○の時に○○○の部分を変数$strとして受け取れるようにしてみましょう。(compactは変数名とその値から配列を作成するPHP関数です)

routes/web.php
Route::get('/a/{str}',function ($str) {
    return view('a',compact('str'));
});

Bladeでは$strを{{}}をつけて呼び出します。

resources/views/a.blade.php
<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel DemoApp</title>
    </head>
    <body>
        <h1>{{$str}}</h1>
    </body>
</html>

サーバを起動し、http://[servername]/a/アイウエオというアドレスでブラウザで確認すると、画面にアイウエオと表示されたと思います。
アドレス部分の「アイウエオ」がビューであるa.blade.phpに渡されて表示されたわけです。

Laravel基礎(2)コントローラー>>

9
16
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
9
16