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ストップ!

進展あったらまた書きます。

この記事が気に入ったらサポートをしてみませんか?