Laravel 静的(固定)ページを動的に追加したり変更したりする方法

フレームワークを使ってサイトを構築していると
動的ページはお知らせくらいしかなく残りは静的ページっていう場合でもフレームワークを通すような処理にしなければならず
静的ページのHTMLが書ける人がいても、その人だけでは静的ページの実装は出来なくなる。

なので、WYSIWYGなエディタを用意して
PHPやプログラミングのことは分からず、HTMLコーディングだけ出来る人でも
新しいページを追加したり、変更したりすることが出来る方法です。

1.静的ページ保存用のDBを作る

例)pagesテーブル
 ・uri
 ・contents

2.ルーティングに該当しなかった時のルーティングを設定する

routes/web.phpの1番下に以下を記述

  Route::fallback('User\PageController@index');

3.静的ページ用のviewを準備

ヘッダ、フッタ、メニューなどは共通で使いたいので以下のような感じにする
例)user/page/index.blade.php

@extends('user.layouts.app')

@section('content')

	<body>
		<div>
            {!! $contents !!}
		</div>
	</body>

@endsection

4.静的ページ用のコントローラーを記述

例)PageController.php

    public function index(Request $request){

        $uri = $request->path();
        $page = Page::where('uri', $uri)->first();
        if(is_null($page)) abort(404);

        $contents = $page->contents;

        return view('user.page.index', [
            'contents' => $contents, 
        ]);

    }

ページ丸ごとを登録するやり方ではなく
テンプレート化してコンテンツ部分のみを登録するやり方なので
実際には、ページタイトル、検索ワード、サイト説明文などもviewに渡してやる必要があります。

この仕組みを作ってからページを修正してFTPしてとかというエンジニアの仕事が随分減りました!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です