Macのローカルにlaravel 5.6のインストール | アプリ開発のおぼえがき3
さて、気を取り直してiMac環境からmac bookに移動するよ
laravelの別環境への設置手順
1. とりあえずgitにプロジェクトを全部pushしておく
2. clone
3. Laravelプロジェクトのディレクトリでcomposer updateをする
色々でてから
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
でok
4. アクセスすると「Whoops, looks like something went wrong」
5. .envファイルが無いのでサンプルから作成
$ cp -Rpa .env.example .env
6. keyを再度生成
$ php artisan key:generate
Application key [base64:Eb4b7Ug+TkSHHEil5cIWWWlkFEi5XhlBh7mxQpIDUrA=] set successfully.
7. 再度artisan serveで立ち上げて確認
$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
無事表示完了
seederを再度試してみる
さっそく前回何も出なかったseedをやってみる
$ php artisan db:seed
Seeding: ArticlesTableSeeder
おお、出た。
チェックしてみる
mysql> select * from articles;
+----+---------------+---------+------------+------------+
| id | title | body | created_at | updated_at |
+----+---------------+---------+------------+------------+
| 1 | タイトル1 | 内容1 | NULL | NULL |
| 2 | タイトル2 | 内容2 | NULL | NULL |
| 3 | タイトル3 | 内容3 | NULL | NULL |
+----+---------------+---------+------------+------------+
3 rows in set (0.00 sec)
うん、ちゃんと入ってますね。次いこう。
と思ったら、確認もartisanでできるっぽい
tinkerというコマンドがある模様
(tinker = いじくります...google翻訳ェ…)
$ php artisan tinker
Psy Shell v0.9.6 (PHP 7.2.7 — cli) by Justin Hileman
>>> $a = App\Article::all();
=> Illuminate\Database\Eloquent\Collection {#2875
all: [
App\Article {#2876
id: 1,
title: "タイトル1",
body: "内容1",
created_at: null,
updated_at: null,
},
App\Article {#2877
id: 2,
title: "タイトル2",
body: "内容2",
created_at: null,
updated_at: null,
},
App\Article {#2878
id: 3,
title: "タイトル3",
body: "内容3",
created_at: null,
updated_at: null,
},
],
}
ふーむ。確認のためには使わないかな。これ。
(使うべきなんだとは思いますごめんなさい)
終了はexitでデレマス。
さて表示だ
app/Http/Controllers/ArticlesController.phpを編集する
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// モデルを利用する場合は随時追加が必要
use App\Article;
class ArticlesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$articles = Article::all();
return $articles;
}
Article Controller側で利用するデータを取得させてreturnする
http://127.0.0.1:8000/articles/
にアクセスしてみると、データがJSONで帰ってきているっぽい
お次はViewだ!
Viewファイルはresources/viewsの中の模様
そこにlayoutsディレクトリを作成し、application.blade.phpを作って下記を書く
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>@yield('title')</title>
</head>
<body>
@yield('content')
</body>
</html>
@yieldとかよくわからん。けど一旦無視
次はresources/viewsディレクトリ内にarticlesディレクトリを作成し、その中にindex.blade.phpを作成。
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')
{{-- @yield('title')にテンプレートごとにtitleタグの値を代入 --}}
@section('title', '記事一覧')
{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
<h1>ほげ</h1>
@endsection
ふーむ、phpで継承しつつテンプレート化ができるということかな
テンプレートを利用するために、コントローラーに追記
public function index()
{
$articles = Article::all();
// return $articles;
return view('articles.index');
}
returnでもともと返していたデータを無くして、viewを返すと。
viewにデータを渡すということではないぽい。。。?と思ったら次ステップで表示してたので安心
とりあえずアクセスしてみる。
http://127.0.0.1:8000/articles/
ほげが表示されたからok
コントローラーのデータをViewで表示する
データを渡す書き方は下記
public function index()
{
$articles = Article::all();
// return $articles;
return view('articles.index', ['articles' => $articles]);
}
return view('表示したいviewファイル', ['渡した後の変数名' => 渡したいデータ]);
って感じなのかな。
渡したデータを処理するために、article/index.blade.phpを修正
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')
{{-- @yield('title')にテンプレートごとの値を代入 --}}
@section('title', '記事一覧')
{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
@foreach ($articles as $article)
<h4>{{$article->title}}</h4>
<p>{{$article->body}}</p>
<hr>
@endforeach
@endsection
foreachとかも使えるのね。
アクセスしたらデータが表示できました。
う〜ん、ここまでこればとりあえず色々できそう。チュートリアルをやめようか悩ましい。
ので一旦noteストップ!
進展あったらまた書きます。
この記事が気に入ったらサポートをしてみませんか?