質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

3回答

3858閲覧

setContentメソッドについて

toll_tree

総合スコア199

Laravel

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/05/11 08:45

laravelのResponseオブジェクトのsetContentメソッドについてお聞きしたいことがあります。

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Http\Response; 7 8class HelloController extends Controller{ 9 10 public function index(Request $request,Response $response){ 11 $html = <<<EOF 12 <html> 13 <head> 14 <title>Hello/Index</title> 15 <style> 16 body {font-size:16pt; color:#999;} 17 h1 { font-size:120pt; text-align:right; color:#eee; 18 margin:-50px 0px -120px 0px;} 19 </style> 20 </head> 21 <body> 22 <h1>Hello</h1> 23 <h3>Request</h3> 24 <pre>{$request}</pre> 25 <h3>Response</h3> 26 <pre>{$response}</pre> 27 </body> 28 </html> 29EOF; 30 31$response->setContent($html); 32 return $response; 33 34 } 35}

上記コードにおいて、responseオブジェクトのsetContentメソッドは、引数の値にコンテンツを変更すると、あるのですが、コンテンツとは一体なんなのでしょうか?
試しに、return $responseとしたのですが、中身は空で何も表示はされませんでした。
「$response->setContent($html);return $response;}」こちらを「return $html」のみとし、実行した結果と同じだったのですが、表示する時以外で、setContentメソッドを利用するメリットはありますでしょうか?

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

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

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

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

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

guest

回答3

0

表示する時以外で、setContentメソッドを利用するメリットはありますでしょうか?

setContentを使う事自体が無い

public function index(Request $request,Response $response){

じゃなくて
public function index(Request $request){

投稿2019/05/12 23:10

bcaa

総合スコア170

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

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

0

なんでドキュメントのどこにも書かれてない使い方してるのか分からない。
htmlを直接返したいとしてもこれだけでいい。

$html = return response($html, 200);

https://readouble.com/laravel/5.8/ja/responses.html

index(Request $request,Response $response)は前にteratailで見たことあるので誰かがどこかで教えてるんだろうけど
本かサイトでこんなこと教えてるなら今すぐ投げ捨てたほうがいい。
明らかに間違い。

投稿2019/05/11 09:24

kawax

総合スコア10377

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

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

mpyw

2019/05/12 12:23

Response をコントローラ引数で受け取っているのは明らかに間違いですね、なんか -1 されていたので是正のために +1
guest

0

ベストアンサー

個別の404ページを出すためにHTTPステータス404を返したい場合など、レスポンスヘッダを変更する場合は文字列ではなくてレスポンスオブジェクトを返す必要がありますね。

通常のhtmlをHTTPステータス200で返すのみで、
後続処理で割り込みなどを実装していないのであれば大差ないかと思います。

HTTPレスポンス 5.8 Laravel

投稿2019/05/11 08:54

Eggpan

総合スコア2665

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

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

toll_tree

2019/05/11 09:04

ということは、特に、レスポンスの変更などなければ、return $htmlなどとして、レスポンスオブジェクトを表示するのと変わりないといった感じでしょうか?
Eggpan

2019/05/11 09:45

リンク貼りましたレスポンス説明の最初にありますとおり 一番基本的なレスポンスは、ルートかコントローラから文字列を返します。フレームワークが自動的に、文字列を完全なHTTPレスポンスへ変換します。 ということなので、 return $htmlとして文字列を返した場合でも 内部的にはレスポンスオブジェクトに変換されたあとで出力されます。 ですので、質問の例であれば return は文字列であっても、レスポンスオブジェクトであっても変わりないです。 ただ、htmlタグそのものはコントローラ内の変数ではなく、ビューに記述すべきではあるかと思います。 メンテナンスを考えた際、画面の一部を変更したいのにコントローラのコードを修正する、ということになってしまいますので。
mpyw

2019/05/12 12:29

上に完全に同意です。コントローラの中にHTMLをべた書きするのは多くの場合アンチパターンなので、Bladeビューを正しく使いましょう。
toll_tree

2019/05/13 07:46

実は、学習の初期段階でして、こういった書き方もできるとの紹介がされてるコードの一つといった感じでした。今、ちょうどBladeを使った章に入りまして、bladeビューを使用した、学習に入りました。 正直、まだlaravelの使い方に慣れていないのですが、取り敢えずは、全体像をつかめるよう、学習を進めていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問