web-dev-qa-db-ja.com

パブリックフォルダから直接HTMLファイルをViewin Laravel

Laravelを使用しています。私は自分の結婚式の招待状をまとめようとしています。パブリックフォルダーにフォルダーがあり、そのフォルダーのスタイルとスクリプトを作成します。

すべてをコピーして新しいブレードファイルに貼り付けるのではなく、そのフォルダを指すことができるかどうか疑問に思っています。


ルート

Route::get('/wedding', 'WeddingController@index');


WeddingController

<?php namespace App\Http\Controllers;

class WeddingController extends Controller {


    public function index()
    {
        return view('wedding.index');
    }

}

質問

/ publicフォルダー内のフォルダーの1つからindex.htmlをロードするようにインデックス関数を指定できるかどうか疑問に思っています。

.bladeディレクトリからapp/resources/viewsファイルをロードする必要がありますか?

これに関するヘルプ/提案は大歓迎です。

8
cyber8200

ウェディングフォルダをパブリックフォルダ内に直接配置するだけです。

mv wedding/ /path/to/laravel/public

次に、結婚式の接尾辞を付けてサイトのURLにアクセスします。

http://my-site.com/wedding

これにより、weddingフォルダー内からindex.htmlが読み込まれます。

これは、try_files構成ファイル内のNginxの/etc/nginx/sites-enabled/my-siteディレクティブを介して機能します。

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

これは、URLに対応する実際のファイル(たとえば、/css/app.css/wedding/index.htmlなど)を最初に検索するようにNginxに指示します。一致するファイルが見つからない場合(たとえば、通常は404 not foundが返されます)、代わりにクエリ文字列を引数としてindex.phpスクリプトに渡す必要があります。

5
Ben Claar

Fileファサードを使用してコントローラーから静的ファイルをロードします

use File;

return File::get(public_path() . '/to new folder name/index.html');
5
Ankit Jain

1つの解決策は、結婚式の招待状のindex.htmlの名前をindex.phpに変更し、それをresources/viewsフォルダー内に配置して、Laravelテンプレートになるようにすることです。

cd path/to/laravel
mkdir resources/views/wedding
mv public/wedding/index.html resources/views/wedding/index.php

次に、必要に応じてコントローラーから呼び出すことができます。

public function index()
{
    return view('wedding.index');
}

もちろん、この方法では、CSS/JavaScript /画像のURLがpublic/フォルダー内のそれぞれの場所に適切にマップされていることを確認する必要があります。

1
Ben Claar