いよいよLaravelでwebアプリの作成に入っていきますが、まだ前までの記事を読んでいない方は以下を参考にしてください。
laravelのセットアップ
ローカルでコードを編集する為の方法
まずはトップページ
これまでの記事で行くと「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でリファクタリングしていく予定です。
ということで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>
これでトップページから新規登録ページへの遷移が完成しました。
まとめ
ひとまず入り口としてはこんなところですね。一通りの流れが理解できれば大丈夫かと思います。
次回はテンプレートの見た目を整えるか、フォーム周りを作成しようかと予定しております。