🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

1004閲覧

Laravel6においてedit.blade.phpの表示が白紙になる。

kamille-mio

総合スコア24

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2019/10/22 19:15

経緯と問題

現在、就活に向けての成果物制作のために以下のサイトを参考にして
PHPでログイン機能を実装するチュートリアル
ログイン機能を作ってる最中で、テンプレートエンジンの項目が出てきたので、Laravelの勉強を以下の3つのサイトでしていたのですが
Laravel5.7: usersのCRUD機能を実装する
Laravel入門 - 使い方チュートリアル -
Laravelで作るRESTなWebアプリ

ルーティングとコントローラーの部分のedit・updateのところでedit.blade.phpに書いたコードが反映されずに、白紙表示されてしまうのが解決できずに困っているので今回質問しました。

###試したこと

ルーティングは確認したところusermodel/{usermodel}/editだったので、アクセスはhttp://localhost:8000/usermodel/1/editとブラウザのURLに入れて行いました。
エラーコード等は表示されず、単なる白ページで表示されてしまいます。
Developerで確認したところ、edit.blade.phpが反映されておらず、Developerから直接HTMLを弄りedit.blade.phpのコードをそのまま貼り付けたら内容は反映された。

コード

app/code/Laravel/routes/web.php

php

1Route::resource('usermodel', 'UserModelController'); 2

app/code/Laravel/app/Http/Controllers/UserModelController.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use App\UserModel; 6use Illuminate\Http\Request; 7 8class UserModelController extends Controller 9{ 10 /** 11 * Display a listing of the resource. 12 * 13 * @return \Illuminate\Http\Response 14 */ 15 16 // 一覧表示 17 public function index() { 18 19 20 $usermodels = UserModel::all(); 21 22 return view('usermodel.index', compact('usermodels')); 23 } 24 25 /** 26 * Show the form for creating a new resource. 27 * 28 * @return \Illuminate\Http\Response 29 */ 30 31 /*1件のデータを新規作成。本来は必要がない(WebAPIにおいて、画面に登録フォームを表示する画面はいらないから)。 32 storeメソッドとセット。 33 */ 34 public function create() { 35 36 return view('usermodel.create'); 37 } 38 39 /** 40 * Store a newly created resource in storage. 41 * 42 * @param \Illuminate\Http\Request $request 43 * @return \Illuminate\Http\Response 44 */ 45 46 // createメソッドで飛ばされた先の実際の処理 47 public function store(Request $request) { 48 $usermodel = new UserModel; 49 50 // フォームから受け取った値をすべて格納する 51 $form = $request->all(); 52 53 // fill()->save();でフォームから受け取った値をもとに複数のカラムの値を更新・追加しセーブする。 54 // UserModelのprotect $fillableの項目も参照。 55 unset($form['_token']); 56 $usermodel->fill($form)->save(); 57 58 return redirect('usermodel/' . $usermodel->id); 59 60 } 61 62 /** 63 * Display the specified resource. 64 * 65 * @param int $id 66 * @return \Illuminate\Http\Response 67 */ 68 69 /* 70 レコード表示。indexと違ってidで紐つけて1件ずつ表示する。 71 テスト用としてviewはつくらず、返された連想配列を単に表示するだけにしている。 72 */ 73 public function show(UserModel $usermodel) 74 { 75 return view('usermodel.show', compact('usermodel')); 76 // オブジェクトを単なる連想配列として返すだけ。 77 // return $usermodels->toArray(); 78 } 79 80 /** 81 * Show the form for editing the specified resource. 82 * 83 * @param int $id 84 * @return \Illuminate\Http\Response 85 */ 86 87 // 更新処理。updateメソッドとセット 88 public function edit(UserModel $usermodel) 89 { 90 $usermodel = UserModel::findOrFail($usermodel); 91 92 view('usermodel/edit', compact('usermodel')); 93 } 94 95 /** 96 * Update the specified resource in storage. 97 * 98 * @param \Illuminate\Http\Request $request 99 * @param int $id 100 * @return \Illuminate\Http\Response 101 */ 102 103 // 更新処理 104 public function update(Request $request, UserModel $usermodel) 105 { 106 $usermodel->user_name = $request->user_name; 107 $usermodel->save(); 108 return redirect('usermodel/'.$usermodel->id); 109 } 110 111 /** 112 * Remove the specified resource from storage. 113 * 114 * @param int $id 115 * @return \Illuminate\Http\Response 116 */ 117 118 // 削除処理 119 public function destroy($id) 120 { 121 // 122 } 123} 124 125

app/code/Laravel/resources/views/usermodel/edit.blade.php

php

1@php 2 $title = __('Edit').': '.$usermodel->user_name; 3@endphp 4@extends('usermodel.layout') 5@section('content') 6<div class="container"> 7 <h1>{{ $title }}</h1> 8 <form action="{{ url('usermodel/'. $usermodel->id) }}" method="post"> 9 @csrf 10 @method('PUT') 11 <div class="form-group"> 12 <label for="user_name">{{ __('UserName') }}</label> 13 <input id="user_name" type="text" class="form-control" name="user_name" value="{{ $usermodel->user_name }}" required autofocus> 14 </div> 15 <button type="submit" name="submit" class="btn btn-primary">{{ __('Submit') }}</button> 16 </form> 17</div> 18@endsection 19

app/code/Laravel/resources/views/usermodel/layout.blade.php

php

1<!DOCTYPE html> 2<html> 3<head> 4 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 5 <meta charset="utf-8"> 6 <meta lang> 7 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> 8 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> 9 <title></title> 10</head> 11<body> 12{{-- @section('content')~@endsectionで囲った部分が入る --}} 13@yield('content') 14</body> 15</html> 16

app/code/Laravel/app/UserModel.php

php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use Carbon\Carbon; 7 8// 日付日時関係はcabornパッケージを使う 9 10class UserModel extends Model 11{ 12 // timestampsを無効化 13 public $timestamps = false; 14 15 // 使用するテーブルを指定 16 protected $table = 'usermodels'; 17 18 // fillセーブするために保存するカラム名を格納する。 19 protected $fillable = ['user_name','password','email']; 20} 21

就活のポートフォリオのためにログイン・新規登録・パスワードリセットを含んだ、スケジュール管理サイトを作ろうと思っていてLaravelにようやく手を付けられたので、このまま進めるためにもどなたかお力添え頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

return していないだけだな。

あと、UserModelControllerというファイル名はアウトだと思います。
ポートフォリオのためならなおさらです。
明らかにMVCを理解していないことがバレます。

投稿2019/10/22 19:23

編集2019/10/22 19:32
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamille-mio

2019/10/22 19:43

ありがとうございます。returnが消えてたことに全然気が付きませんでした。 ファイル名に関しては、ちょうどクラスの基本を一通り押さえたところでhttps://qiita.com/ShibuyaKosuke/items/f114ffccf441edb2b745 この記事に従ってMVCとアプリの基本をやっていたので、先の記事に従ってこの名前になっています。 が、たしかにあまりよろしくないというか上記記事内ではともかく、やっていてLaravelでのコントローラーの使い方においては不適切な命名だということは感じているので、本番では気をつけます。
m.ts10806

2019/10/22 20:30

質問者さん 私が見落としているだけかもしれませんが、 当該記事ではUserModelController という名前でコントローラを作るようにはなっていないような・・・?
退会済みユーザー

退会済みユーザー

2019/10/23 16:46

UserModelControllerなんて命名してたかな・・・? 記事では、LoginController だし、使うとしても、UserController だと思う。 自分の書いた記事...
kamille-mio

2019/10/23 17:42

大変失礼しました……取っておいたバックアップを見直してみたらPHPで制作していたものでは皆さんのおっしゃる通り、LoginControllerとなっていました。 定かではないですが、恐らくLaravelに手を付けた時にPHPのときのモデルはDBのアクセスや各種値の取得のメソッドをまとめたものだったので、その流れでLaravelのそれも同じなのだろうとUserModelControllerと最初に命名してしまったためだと思います。 軽率でした、以後気をつけます。大変申し訳なかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問