laravel5.5でヘルプページを作る
今どきのWebサービスって、そもそもヘルプページが無いけど、欲しいという要望があるので作らねばならない…。
要望その1、ページ毎に画面の説明ページ(ヘルプ・ガイド)へのリンクが欲しい
要望その2、シンプルなテキストだけで良い(readme.txtみたいな感じ)
要望その3、基本的に修正しない(誤字脱字や機能追加などがあれば別)
要望その4、5~6ページ程度
1, 説明文の記述
う~ん、最初はTinyMCEで編集とか必要かな?と思ったけど、この程度ならテーブルも不要だな。
説明文をソース直書きでもいいけど、せめてconfigファイルくらいには外出にしよう。phpstormなどIDEを使っていれば、説明文の中にシングルクォーテーションも円マークでエスケープされる。
config/help.php
1 2 3 4 5 6 |
<?php return [ 'intro' => '最初の説明' 'register'=> 'ユーザ登録についての説明', 'top'=> 'トップページについての説明', ]; |
2, 表示画面テンプレートも作る
resources/views/auth/help.blade.php
1 |
{{ $help_content }} |
3, HelpController.phpを生成して、制御処理を記述
php artisan make:controller HelpController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelpController extends Controller { public function index($kind) { $help_content = ''; switch($kind){ case 'intro': $help_content = \Config::get('help.intro'); break; case 'register': $help_content = \Config::get('help.register'); break; case 'top': $help_content = \Config::get('help.top'); break; defualt: $help_content = ''; break; } return view('auth.help', compact('help_content')); } } |
4, web.phpにルーティングを記述
1 2 |
// ガイド(ヘルプ)画面 Route::get( '/help/{kind}', 'HelpController@index'); |
リンク元が認証ありなしが混在しているので、URLさえ知っていれば見れるように認証はかけない!
ヘルプ画面別に認証をかけるなら、HelpControllerに記述する。
5, ヘルプページへのリンクボタンは、ナビバーに配置。画面別にリンク先を変更するのでURLを元に変える。
各ページの操作説明なら、ナビバーじゃなくてページ毎にリンクボタンを置いた方が良いと思う(認証のページとかあると特にそう思う)
デザイン的な問題もあるから判断が難しい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<div class="collapse navbar-collapse" id="app-navbar-collapse"> {{ link_to("section", 'トップ', ['class' => 'btn', 'style'=>'margin:10px']) }} <?php $help_kind = ''; ?> {{-- sectionのページ & ログイン中なら --}} @if( Request::is('section*') && \Auth::guard('user')->check()) {{ link_to("section/logout", 'ログアウト', ['class' => 'btn', 'style'=>'margin:10px']) }} @if(Request::is('section')) {{-- トップ画面の説明ページへのリンクを表示 --}} <?php $help_kind = 'top'; ?> @elseif(Request::is('section/chatroom*')) {{-- メッセージのやり取りの説明ページへのリンクを表示 --}} <?php $help_kind = 'chat'; ?> @endif {{-- ユーザーの新規作成の説明ページへのリンクを表示 --}} @elseif(Request::is('section/register')) @if(empty(Request::Input())) <?php $help_kind = 'keycode'; ?> @else <?php $help_kind = 'register'; ?> @endif {{-- パスワードリセットの説明ページへのリンクを表示 --}} @elseif(Request::is('section/password/reset')) @if(empty(Request::Input())) <?php $help_kind = 'keycode'; ?> @else <?php $help_kind = 'password_reset'; ?> @endif @endif @if(!empty($help_kind)) {{ link_to("section/help/$help_kind", 'ガイド', ['class' => 'btn', 'target' => '_blank', 'style'=>'margin:10px']) }} @endif </div> |