【PHPでwebアプリを作る:Laravel6】トップページと追加ページを作成

web Webエンジニア

いよいよLaravelでwebアプリの作成に入っていきますが、まだ前までの記事を読んでいない方は以下を参考にしてください。

laravelのセットアップ

laravel

【PHP・Laravelで開発準備編2】CentOS8にLaravel6をインストールする

2019年10月16日

ローカルでコードを編集する為の方法

share

VirtualBoxで構築したLaravelをローカルのwindowsで編集する

2019年10月18日

まずはトップページ

これまでの記事で行くと「http://localhost:50080/whateat/public/」にアクセスするとトップページが表示されるようにセットアップしました。

これだとURLが無駄に長いので「http://localhost:50080/」でアクセスが可能なようにApacheの設定を変更します。

具体的には最初に見る場所=ドキュメントルートを「/var/www/html/whateat/public」に変更します。

vi /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html"
↓
DocumentRoot "/var/www/html/whateat/public"

systemctl restart httpd

これで「http://localhost:50080/」にアクセスして同様にトップページが表示されればOKです。実際は「/var/www/html/whateat/public」を見にいっています。

トップページのカスタム

まずはトップページ用のコントローラーを作成します。サーバー側からのコマンドラインで以下を実行します。

cd /var/www/html/whateat/
php artisan make:controller TopController

これで「app/Http/Controllers」の下にTopControllerが作成されます、eclipse上で表示されない場合はフォルダを右クリックしてリフレッシュをすると表示されると思います。

とりあえずテストなので以下のようにします。

class TopController extends Controller
{
    public function index()
    {
        echo 'test';
        exit;
    }
}

最初に見られる場所のルーティング

デフォルトでは「resources/views/welcome.blade.php」というビューファイルが読み込まれて表示される設定になっています。

これが記述されているのが「routes/web.php」です。

Route::get('/', function () {
    return view('welcome');
});

これを以下のように書き換えます。

Route::get('/','TopController@index');

「http://localhost:50080/」にアクセスしてtestと表示されれば成功です。トップページではTopController内のindexにアクセスされるように変更されました。

トップページのテンプレート

無事作成したコントローラーにアクセスするように変更出来たので、次はトップページでテンプレートを読んでみましょう。

まずはベースとなるlayout.blade.phpを「resources/views」に作成します。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" charset="utf-8">
        <title>@yield('title')</title>
    </head>
    <body>
        @yield('content')
    </body>
</html>

次に同じ場所にあるtop.blade.phpを編集します。

@extends('layout')
@section('title', 'トップページ')
@section('content')
トップページ
@endsection

これでlayout.blade.phpがベースとしてtop.blade.php内の@section(‘content’)内部分が読み込まれるようになります。

ヘッダやフッタなどの共通部分はlayout.blade.phpに記述すればどのページでも適用されるようになるという感じです。

もう一つページを作って遷移する

以下の記事で作成したものをlaravelでリファクタリングしていく予定です。

regist

【PHPでwebアプリを作る】登録フォームでユーザーの新規登録をする

2019年10月1日

ということでsignupというコントローラーを作成してそちらに遷移するところまでを作っていこうと思います。

まずはコントローラーの作成コマンド。

cd /var/www/html/whateat/
php artisan make:controller SignupController

SignupControllerを以下のように修正。

class SignupController extends Controller
{
    public function index()
    {
        return view('signup');
    }
}

routes/web.phpに追記

Route::get('/signup','SignupController@index');

signup.blade.phpは適当に。

@extends('layout')
@section('title', '新規登録')
@section('content')
新規登録
@endsection

「http://localhost:50080/signup」にアクセスしてページが表示されればOKなんですが、おそらく404エラーになると思います。

その場合「vi /etc/httpd/conf/httpd.conf」で「AllowOverride None」となっている場所を「AllowOverride All」に変更(いくつかあるかもです)して「systemctl restart httpd」します。

これでページが表示されるかと思います。

最後にtop.blade.phpからsignupのページへのリンクを貼ります。

<a href="{{ url('signup') }}">新規登録ページへ</a>

これでトップページから新規登録ページへの遷移が完成しました。

まとめ

ひとまず入り口としてはこんなところですね。一通りの流れが理解できれば大丈夫かと思います。

次回はテンプレートの見た目を整えるか、フォーム周りを作成しようかと予定しております。