カテゴリー
サインイン 新規登録

間違いや改善の指摘

内容の技術的な誤り・誤字脱字やミスのご報告・解説やトピックの追記/改善のご要望は教材をさらに良くしていく上でとても貴重なご意見になります。

少しでも気になった点があれば、ご遠慮なく投稿いただけると幸いです🙏

実際には誤りではなく勘違いであっても、ご報告いただけることで教材のブラッシュアップにつながります。

質問ポリシー①

教材受講者みなさんのスムーズな問題解決のために、心がけていただきたいことがあります。

教材の内容に関する質問を投稿しましょう

教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。

その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。

2-4

トップ画面の見た目を整える

このパートではトップ画面の見た目を整えていきます。

この章で学べること

Copied!
- Viewの編集 - 見た目を整える方法 - レスポンシブ対応

今回のパートで作成する画面:ログイン画面

image

学習キーワード

Copied!
- blade - scss

トップページを作成する HTML

まず、techpit-match/resources/views フォルダ内に top.blade.phpファイルを作成します。

Copied!
techpit-match/resources/views └── top.blade.php

top.blade.phpファイルに下記を記入します。

resources/views/top.blade.php
123456789101112
Copied!
@extends('layouts.layout') @section('content') <div class="loginPage"> <div class="container"> <div class="loginPage_contents"> <h1 class="h3 loginPage_contents_title">新しいマッチを見つけよう</h1> <div class="btn loginPage_contents_btn"><a class="text-white" href="{{ route('login') }}">メールアドレスでログインする</a></div> </div> </div> </div> @endsection

一般的なHTMLの記述方法に加え、

Laravelに実装されているBladeというテンプレートエンジンを使うため、
一部特殊な記述方法になっています。

  • @extends('layouts.layout') ・・外部ファイル読み込み。後述のレイアウトファイルを読み込む
  • @section('content') ・・ここから
  • @endsection ・・ここまで

ヘッダー、メニュー、フッター、CSSやJavaScript読み込みなど、
複数のページで共通の内容をレイアウトファイルとして保存しておいて、
@extendとつけることで、レイアウトファイルを読み込みます。
(後述します。)

@section@endsectionで囲まれた範囲がそれぞれのページ内容になります。

もう1つ見慣れない記述方法があります。

  • <a href="{{ route('login') }}">

ルートファイル techpit-match/routes/web.phpにルート名を明記しておくと、
この書き方ができます。

2章(2-3)で解説していますが、
php artisan ui bootstrap --auth実施時に下記の内容がルートファイルに追記されています。

routes/web.php
1
Copied!
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');

name('login')と記載がある事で、

<a href="{{ route('login') }}">と書くだけでルーティングする事ができます。

  • メリット ・・読みやすい。実際のファイルパスを気にせずに書ける

トップページを作成する ルーティングファイル

新しくファイルを作成した後は、
必ずルーティングファイルにも明記が必要です。

techpit-match/routes/web.phpファイルの内容を下記に変更します。

routes/web.php
1234
Copied!
//変更前 Route::get('/', function () { return view('welcome'); });
routes/web.php
1234
Copied!
//変更後 Route::get('/', function () { return view('top'); });

このように記載する事で、
ルート (http://techpit-match など) にアクセスしたら、
top.blade.phpが表示される様になります。

※この時点では layout.blade.php を作成していないためエラーが発生します。
後述のlayout.blade.php を作成することで表示されるようになります。

トップページを作成する Scss

次に、techpit-match/resources/sass/app.scss ファイルに以下のコードを追記します。

Copied!
techpit-match/resources/sass └── app.scss
resources/sass/app.scss
123456789101112131415161718192021
Copied!
// Fonts @import url('https://fonts.googleapis.com/css?family=Nunito'); // Variables @import 'variables'; $fa-font-path: "../webfonts"; // Bootstrap @import '~bootstrap/scss/bootstrap'; // FontAwesome @import "~@fortawesome/fontawesome-free/scss/fontawesome"; @import '~@fortawesome/fontawesome-free/scss/solid'; @import '~@fortawesome/fontawesome-free/scss/regular'; @import '~@fortawesome/fontawesome-free/scss/brands'; //ここから追加 //pages @import "top";

@import "top"; と追記することで、

techpit-match/resources/sass/_top.scss

ファイルが読み込めるようになります。

techpit-match/resources/sass/_top.scss ファイルを作成し、

_top.scssに下記コードを記入します。

※先頭に _をつけたファイルはパーシャルファイル と呼ばれます。

Copied!
techpit-match/resources/sass └── _top.scss
resources/sass/_top.scss
12345678910111213141516171819202122
Copied!
.loginPage { &_contents { height: 80vh; display: flex; flex-direction: column; justify-content: space-between; text-align: center; &_title { margin-top: 12vh; } &_btn { display: block; max-width: 400px; padding: 20px; margin: 0 auto; border-radius: 30px; background: #fd5068; color: #fff; } } }

この講座ではScssの詳細な記述方法は解説しませんので、
必要があれば下記記事などを参考にしてみてください。

SCSSの基本的な書き方

トップページを作成する レイアウトファイル

Laravelではヘッダーやフッター、メニューなど、
複数のページで共通で使用するファイルをレイアウトファイルとして切り分けて保存する事ができます。

2章(2-3)でphp artisan ui bootstrap --authを実行しているため、

下記レイアウトファイルが生成されています。

Copied!
techpit-match/resources/views/layouts └── app.blade.php

このファイルを元に、共通箇所を作成します。

ファイル名はなんでもいいのですが、
今回はわかりやすさ重視で、layout.blade.phpファイルとします。

techpit-match/resources/views/layouts/app.blade.phpファイルをコピーし、
layout.blade.phpファイルとして保存してください。

Copied!
techpit-match/resources/views/layouts └── app.blade.php └── layout.blade.php

次に、layout.blade.phpのコードを下記のように編集してください。

resources/views/layouts/layout.blade.php
1234567891011121314151617181920212223
Copied!
<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- CSRF Token --> <meta name="csrf-token" content="{{ csrf_token() }}"> <title>{{ config('app.name', 'Laravel') }}</title> <!-- Styles --> <link href="{{ asset('css/app.css') }}" rel="stylesheet"> </head> <body> @yield('content') <!-- Scripts --> <script src="{{ asset('js/app.js') }}"></script> </body> </html>

変更内容ですが、<body>タグ内の記述を@yield('content')<script>だけにしています。

@yield('content')と記載することで、

techpit-match/resources/views/top.blade.phpファイルに記載した、

@section 〜 @endsection で囲った内容が表示される事になります。

トップページの背景色を変更する

最後に、
Laravel初期設定では背景色が少しグレーになっているので、白色に変更します。

techpit-match/resources/sass/_variables.scssファイルの2行目あたりに、
$body-bgとして背景色が指定されているので、こちらを白に変更します。

resources/sass/_variables.scss
12
Copied!
// Body $body-bg: #f8fafc;

こうですね。

resources/sass/_variables.scss
12
Copied!
// Body $body-bg: #fff;

トップページを作成する ビルド

SCSSファイルを反映させるため、

コマンドプロンプトで、npm run devと入力後、

コマンドプロンプトでphp artisan serveと入力し、

ブラウザでhttp://localhost:8000と入力します。

このような表示になっていればOKです。

image

レスポンシブ対応

パソコンだけでなく、

iPhoneなどのスマートフォンやタブレットからアクセスした際もみやすく表示することを

レスポンシブ対応といいます。

すでにインストールしているBootstrap4はレスポンシブ対応を前提に作成されています。

レスポンシブ対応するには、Viewportという設定が必要になりますが、

この章で作成したレイアウトファイルの中に、Viewportの設定もすでに含まれています。

techpit-match/resources/views/layouts/layout.blade.phpファイル内に下記の記述があります。

resources/views/layouts/layout.blade.php
1
Copied!
<meta name="viewport" content="width=device-width, initial-scale=1">

この記述により、レスポンシブ対応は実施済みということになります。

レスポンシブ対応されているかを確認するために、グーグルクロムで画面上任意の箇所で右クリックし、
検証をクリックします。

image

クリックすると、グーグルデベロッパーツールが表示されます。

下記画像の通り、①->②とクリックすると、様々なデバイスの画面サイズを確認できます。

image

デバイスの横幅により、画面の表示が調整されているのがわかるかと思います。

*この講座では、iPhone6/7/8 の画面サイズを想定して作成しています。

以上でこのパートは終了です。お疲れ様でした!

現在のパート (4)
全パート (138)
みんなで助け合おう!
現在のパートのディスカッション 全4件
2-4
スタライ 2021-01-25
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login'); が表示されない。

発生している問題

php artisan ui bootstrap --auth実施時に下記の内容がルートファイルに追記されています。
routes/web.php
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');

と説明がありますが、追記されておりませんでした。
そのため、routes/web.phpの最後尾にコピペして追記しました。
そして、php artisan serveを実行したところエラーになりました。(画像参照)
その後、追記した内容をコメントアウトして、再度実行すると問題なく『あたらしいマッチを見つけよう』というページが表示されました。

とりあえず、次の章へ進もうと思いますが、
このまま、追記せずに進んでも問題ないでしょうか?

エラー画面をスクショで添付してください

2-4エラー.png

補足情報
Windows10、xampp(Apache/2.4.39 (Win64)・PHP/7.3.5・Server at localhost Port 80・10.5.8-MariaDB)

2-4
kmasa 2020-03-27
質問です

お世話になっております、Masanoriです。

この教材を参考にさせていただきながら、自分のアプリケーションを作っております。bootstrapは使用せず、resources配下のsassフォルダのscssファイルにスタイルの記述をしております。

scssファイルの記述の変更が、ブラウザのリロードボタンを押しても最新状態に更新されないという問題が起きていました。ターミナルにて%npm run devを実行後、リロードボタンを押すと反映されます。このままでは、scssファイルを変更する度にこの作業をやらないといけないのはめんどくさいです。

対応策として、ターミナルの%php artisan serveを実行しているウィンドウとは別で、%npm run watchを実行しています。こうすれば、scssファイルの記述を変更し、ブラウザのリロードボタンを押した時に、Webpackが自動で変更を感知しアセットを自動的に再コンパイルしてくれるようです。

この対応策以外に方法があるのかをお聞きしたいです。

ディレクトリの構造、各種ファイル、ターミナルの状況を画像にて添付させていただきます。よろしくお願い致します。

laravel 6.X
php 7.3.9
node 12.16.1
npm 6.13.4

image

image

image

image

2-4
bucchou 2019-12-11
質問です

アオキさんこんばんは。

ターミナル上でも画面上でもエラーらしきものは出なかったんですがlayout.blade.phpを作成しても

web.phpのすべてのファイルでエラーが消えません。
VScodeを再起動したりしたんですが治らず、、、

どこを見ればいいのかググってもわかりませんでした。

お手数ですがよろしくお願いいたします

image

image

image

2-4
ナカウエセイタロウ 2019-09-27
質問です

アオキ様
こんばんは

発生している問題
1 cssが正しく反映されない。
2 app.scss内のBootstrapとfont awesomeの相対パスが無効になっている。

やってみたこと
layout.blade.phpのstyle以下のパスを現在のディレクトリを見ていじってみた
app.scss内のBootstrapとfont awesomeのリンク先を表示してみた(vs code)→存在しない

環境
mac Mojave 10.14
MAMP

cssとの連携でこけています。
よろしくお願いいたします。

image

image

image