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

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

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

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

Q&A

解決済

1回答

2751閲覧

laravelでhtmlのcacheをしたいと思うのですが

kaji

総合スコア648

PHP

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

0グッド

0クリップ

投稿2016/08/05 15:59

編集2016/08/06 22:22

以下のように組んだのですが真っ白になりました。

php

1 namespace App\Http\Controllers; 2 use App\Http\Requests; 3 use Illuminate\Http\Request; 4 use Illuminate\Support\Facades\Cache; 5 class IndexController extends Controller 6 { 7 public function index() 8 { 9 if (Cache::has('html')) { 10 return Cache::get('html'); 11 } 12 $ret = view('index', $this->_data); 13 Cache::put('html', $ret, 10); 14 return $ret; 15 } 16 }

以下の$retがそもそも空でした。

php

1$ret = view('index', $this->_data); 2print nl2br(print_r($ret,1));exit;

viewからhtmlを取得できますでしょうか?


追記
自己解決はしてません。
さらに調べたのですが
print_rでなくvar_dumpとしたところ
画面がフリーズしてしまったので、view()の戻り値が膨大なデータと成ってるっぽいです。
view()の戻り値としてhtml文字列を取得する方法がありましたら教えて欲しいです。


追記2
view()は公式の記述にしたがっております。
https://readouble.com/laravel/5/2/ja/controllers.html
laravelではそのように書くのだろうというだけの認識で、多少追ってみたのですが、わからなかったため質問いたしました。
view()の関数はlaravelのフレームワークの以下場所にあるようです。

vi ./vendor/laravel/framework/src/Illuminate/Foundation/helpers.php

php

1if (! function_exists('view')) { 2 /** 3 * Get the evaluated view contents for the given view. 4 * 5 * @param string $view 6 * @param array $data 7 * @param array $mergeData 8 * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory 9 */ 10 function view($view = null, $data = [], $mergeData = []) 11 { 12 $factory = app(ViewFactory::class); 13 14 if (func_num_args() === 0) { 15 return $factory; 16 } 17 18 return $factory->make($view, $data, $mergeData); 19 } 20}

追記3
composer.jsonは特にいじってません。

php

1{ 2 "name": "laravel/laravel", 3 "description": "The Laravel Framework.", 4 "keywords": ["framework", "laravel"], 5 "license": "MIT", 6 "type": "project", 7 "require": { 8 "php": ">=5.5.9", 9 "laravel/framework": "5.2.*", 10 "laravel/socialite": "^2.0" 11 }, 12 "require-dev": { 13 "fzaninotto/faker": "~1.4", 14 "mockery/mockery": "0.9.*", 15 "phpunit/phpunit": "~4.0", 16 "symfony/css-selector": "2.8.*|3.0.*", 17 "symfony/dom-crawler": "2.8.*|3.0.*" 18 }, 19 "autoload": { 20 "classmap": [ 21 "database" 22 ], 23 "psr-4": { 24 "App\\": "app/" 25 } 26 }, 27 "autoload-dev": { 28 "classmap": [ 29 "tests/TestCase.php" 30 ] 31 }, 32 "scripts": { 33 "post-root-package-install": [ 34 "php -r \"copy('.env.example', '.env');\"" 35 ], 36 "post-create-project-cmd": [ 37 "php artisan key:generate" 38 ], 39 "post-install-cmd": [ 40 "Illuminate\\Foundation\\ComposerScripts::postInstall", 41 "php artisan optimize" 42 ], 43 "post-update-cmd": [ 44 "Illuminate\\Foundation\\ComposerScripts::postUpdate", 45 "php artisan optimize" 46 ] 47 }, 48 "config": { 49 "preferred-install": "dist" 50 } 51}

vi ./vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
のview()関数内にデバッグコードを記述しました。
問題なくここにきてるようです。

view()の戻り値として$retが膨大と書いておりましたが、
ブラウザで30秒ほどまっているとデータが出てきました。

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

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

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

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

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

asahina_dev

2016/08/06 03:05 編集

白い表示→戻り値がからだったんで「自己解決したようですが」と思ったのですがちがったのですね。(けしけし)
asahina_dev

2016/08/06 03:03

view の実装がないようですがどこの共通関数ですか? 戻り値が膨大ではなく view ファンクションの場所がわからないように見えますが
asahina_dev

2016/08/06 04:02

view 自体が標準のを使っているという認識ですね。 コンフリクトなきもするので composer.json を上げてください
guest

回答1

0

ベストアンサー

Illuminate\View\View
を見たところ render/renderContents というメソッドがあるのでこれを実行しその戻り値が html or responce オブジェクトのようですね $ret をそのまま返しては行けないと思います。

投稿2016/08/06 08:43

asahina_dev

総合スコア610

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

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

kaji

2016/08/06 22:23

asahina_devさんのおかげで解決できました。 ありがとうございました。 これでうまくいきました。 $ret = view('index', $this->_data)->render();
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問