Laravelでブログを作成する方法【チュートリアル】

こういう記事が探せばいくらかあると思います。

基本的には、書き込み処理と表示する事ができればやりたい事は、これの使い回しなので、どのような処理の書き方をしているのかブログ編でみて、それを自分のやりたいことに置き換えたらいいと思います。

このページはModelからcontroller、Viewまで説明してくれてそうなのですが、なんせ1記事で全てを説明すると、ボリュームが長くて、ModelやViewはわかるから、なんとか簡潔にここだけ説明してる記事があればいいのになって僕自身はなるので、スコープをControllerに限定して記事にしておきます。

自分用のメモ Laravelの使い方

基本的には、controllerが何かは上のリンクでまとめています。

Model

View(Bladeテンプレート)

これらは、別記事で書いておきます。

Controllerを作成する

Controllerは手動でファイルを作成しても構いませんが、LaravelのartisanコマンドにControllerを作成するコマンドが既に用意されているので、それを使ってサクッと作りましょう。

手動でやることには変わりないのですが、Laravelのように規約に従う事が重要なもので、あれば事前に用意された物を使って、下手にこだわらないほうがいいのかなって思うので、黙って下記のコマンドを実行しましょう。

php artisan make:controller ページ名Controller

これで、app/Http/Controllersの配下にControllerファイルが作成されます。

extends Controllerと、Laravelのcontrollerクラスを継承しているので、必要な処理を書くだけで実装する準備ができます。

ページを表示する指示を書く

Controller名と紐づくView(Bladeテンプレート)を呼び出すだけのメソッドを作成します。

と言っても基本的には最初のページはHTMLと同じでindexという名目になると思います。

そのため記述方法としては下記のようになります。

public function index(){}

これでページ名/index.blade.phpファイルが呼び出され表示されます。

このindex()は、index.blade.phpが存在しないとしても規約として記述していなければいけないので、絶対に書きましょう。

/routes/wep.phpには以下のように追記してください。

Route::get('/', 'ページ名Controller@index')->name('index');

これで、URLにドメイン名を入力する事で、トップページの表示をすることができます。

[ / ]はルートを意味します。

送信フォームから送られた値をモデルを経由して新規で書き込む処理の呼び出し

書き込み処理にはページが存在する必要はありません。

処理としては配列変数を定義して[Input::メソッド('nameに指定している値')]をアロー演算子で代入します。

例えば、car_nameというカラム名にデータを挿入したい場合には

$配列変数名 = [
    'カラム名' => Input::メソッド('nameに指定している値'),
  ];

これで処理として書き込み準備ができました。

次にバリデートを実装します。

未入力でなんでもかんでも登録をされては困るので、必須の項目にだけバリデートを設定します。

$rules = [
    'カラム名' => 'required',
  ];

これでバリデートを使用する準備ができました。

$valid = Validator::make($配列変数名, $rules);

これでバリデートの確認をします。

配列名変数に代入した値とバリデートルールの内容が問題ないのかを確認します。

if ($valid->passes()) {処理内容の記述}

もしもバリデートルールがパス(通過)できたので、あれば処理内容に記述されている情報の処理を実行します。

つまり書き込みの処理を実行します。

もしも渡された値がバリデートルールをパスできなければ、前ページに戻りエラーを表示するなりエラーページにリダイレクトする処理を記述します。

全体を記述すると下記のような感じになります。

  if ($valid->passes()) {
    $配列変数名 = new Post($post);
    $配列変数名->save(); return Redirect::to('リダイレクト先')->with('success', '成功した旨のメッセージ'); 
   } else {
    return Redirect::back()->withErrors($valid)->withInput(); 
   }

これで保存をする事処理が記述できました。

送信フォームから送られた値をモデルを経由して既存の投稿を更新する処理の呼び出し

これは、基本的には新規作成と同じ処理を記述します。

新規の書き込み処理と異なる点はgetDirtyを使って前回の書き込みとの差異がない事を確認する処理を記述する事です。

これを応用してdelete処理も書けますね。

今思いついた書き方は、更新という方法でdel_flgカラムの値を0から1などに変更する事で、書き込んだ内容を表示非表示を切り替える事ができると思いました。

レコードから完全に削除はあまり宜しくないと思っているので、このやり方がベストかなと思います。

今回のControllerの使い方でCRUDは一通り触れました。

Webアプリケーションは基本的に作成、表示、更新、削除ができることがマストなので、これで基本機能は、、、もう一個だけ最低限ないと困るものがありますね。

ユーザー認証です。

誰でも書き込める掲示板であれば、不要ですが基本的にはユーザー認証が必要だと思うので、下記を先頭に書くだけで達成できます。

/**
* ログインしていないとページにアクセスできない
*/
public function __construct()
{
$this->middleware('auth');
}

これで一通りの最低限の実装ができますね。

Laravelの機能だけでCRUDが簡単に実装できる事を改めて勉強して知りました。

これから、もっともっと成長できたらいいなぁ。