Laravel day 1
環境構築
M1 Macに環境を構築していく
Composerの準備
LaravelはComposerを使用するため、Composerをインストール。今回はHomebrewを使用してインストールする。諸々アップデートも入るので、結構時間かかるのね。
$ brew install composer
.....
$ composer --version
Composer version 2.3.5 2022-04-13 16:43:00
Laravelのインストール
Versionは4.2をインストールする。
公式サイトのドキュメント通りに進めていく。
composer global require "laravel/installer=~1.1"
pathを通そうと思って気が付いたが、シェルがbashになってる。確かzshが標準なはずなので、過去に何かやっている時に変えてしまったのかな。とりあえず戻す。
$ chsh -s /bin/zsh
これで戻った。ターミナルの再起動で確認。ついでにVSCodeのシェルも変更する。
こちらは、設定から「terminal.integrated.shell.Osx」を検索して、一覧からzshを選択する。(デフォルトのターミナルを変えれば連動するかも)
次にパスを通す。.zshrcに次の行を追加。追加後シェルの再起動。
PATH=$PATH:~/.composer/vendor/bin
エラー:Laravelのインストールに失敗
% composer create-project laravel/laravel cmap --prefer-dist
Creating a "laravel/laravel" project at "./cmap"
Installing laravel/laravel (v9.1.8)
In ProjectInstaller.php line 75:
mkdir(): Operation not permitted
mkdirで権限エラー。chmodを使用してパーミッションを変更するものの解消されず。結局下記手順でうまくいく。原因については今度調査するかも。
% mkdir cmap
%cd cmap
%composer create-project laravel/laravel . --prefer-dist
ローカルサーバにて動作確認
% php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
[Mon May 16 00:03:39 2022] PHP 8.1.6 Development Server (http://127.0.0.1:8000) started
http://127.0.0.1:8000にブラウザでアクセス
正常に表示できたら開発環境の構築完了
もっといい方法?Dockerで開発環境を作る
改めてLaravel 9系のマニュアル見たらDockerを使用する方法を推奨してた。なので、試してみる。と思ったけど、ライセンスを確認したところ無料プランはあるものの、基本的にビジネスユースになることと、最終的にリモートサーバ上で動作させるため見送ることにする。
恒例のHello worldの表示
様式美に従ってHello worldを表示する。
初期設定
config/app.php
'name' => env('APP_NAME', 'CMAP'),
'env' => env('APP_ENV', 'production'),
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
'fallback_locale' => 'ja',
'faker_locale' => 'ja_JP',
.env
APP_NAME=CMAP
ルーティングの設定
/helloで表示されるようにルーティングの設定
routes/web.php
web用のルーティングはここで設定
Route::get('/hello', function() {
return view('hello');
});
resource/views/hello.blade.php
表示用のテンプレートファイル
<body class="antialiased">
<div>
<h1>Hello world.</h1>
</div>
</body>
http://127.0.0.1:8000/hello
でhello worldが表示。
Controllerを使ってみる
コントローラーからHello worldを返して表示する。ついでに、/hello/123でアクセスすると「Hello World.123」と表示するようにする。
app/Http/Contollers/MapController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MapController extends Controller
{
/**
* Hello worldを返すだけ
*
* @param int $id
* @return \Illuminate\View\View
*/
public function show($id) {
return view('hello', [
'map' => 'Hello world'.$id
]);
}
}
resource/views/hello.blade.php
<body class="antialiased">
<div>
<h1>{{ $map }}</h1>
</div>
</body>
セキュリティは大事。特に入出力があるサイトを作成する場合は注意が必要。そういう時に、ドキュメントに明記されていると助かる。
routes/web.php
Route::get('/hello/{id}', [MapController::class, 'show']);
次回:Modelを使ってみる
今日はここまで。次回は、DBを用意してModelを使ってDBとの連携を行う。
この記事が気に入ったらサポートをしてみませんか?