ホームページ制作/SEO対策なら株式会社サイバーブレーンへ

 03-5961-5681 平日10:00~19:00

 2019-07-05

ララベル制作覚書(初心者向け)

laravelを使うので自分用基礎的な内容を覚書しました。

・laravelの出力の流れ

MVCの考え方で作られている。

M:モデル(データベースとかクラスとか)
V:ビュー(レイアウトテンプレート)
C:コントローラ(パラメータなどの処理を行うところ)

リクエストにしたがってコントローラでモデルからデータを取得して処理してビューで表示するという流れで表示が行われる。(C→M→C→V)

・何かページを作る時の作業

・web.phpにルーティングを書く
こんなリクエストがきたら、このメソッドを実行してくださいという指示をweb.phpに書く。

例:「○○○.co.jp/people」へのリクエストがあった場合、peopleコントローラのindexメソッドが実行される
Route::get('/people,'PeopleController@index');

ルーティング書いてなかったら基本的に何のページも表示されない。

・コントローラを作って処理を書く(コントローラの作り方は→https://www.cyberbrain.co.jp/news/detail/194/)

上記の指示内容に書いてある「PeopleController@index」というのは、実際には
app/Http/Controllers/PeopleController.phpの中に書いてある「index」メソッドのこと。

コントローラは基本的にここに作られるので(サーバにSSHでアクセスしてartisanコマンドを使って作る。artisanが自動的にここに作る。)上記のように省略して指定している。


・DBを使う場合は、モデルも作る。(モデルの作り方は→https://qiita.com/astrsk_hori/items/c3748c588164ab0ebd1b#model%E3%82%92%E4%BD%9C%E6%88%90)

コントローラからモデルを呼び出してデータを取得したい。
例として、パラメータで、peopleテーブルに入っている情報の中で、公開していい情報だけとってきて、nameカラムに入っている情報を表示するという動作を行わせることにする。

・テーブル名:people
・公開情報の入っているカラム名:publish_status
・名前の入っているカラム名:name

ということ。

まず、リクエストは
「○○○.co.jp/people?publish_status=publish」
という感じでくるとする。

この情報は$requestというあらかじめ決められている変数に入れられてコントローラに送られて必ず受け取る。

コントローラの実際の書き方は以下のような感じ。

<?PHP

namespace App\Http\Controllers;
use Illuminate\Http\Request;

//↑ここまではあらかじめ書いてある(artisan使って作っていれば)

use App\Models\Person;
//↑ここで使用するモデルを宣言する

class PeopleController extends Controller
{
//↑この、コントローラ名も、artisanが勝手に書いておいてくれる。


//↓以下にindexメソッドの内容を書く
function index(Request $request)
{

  $people_datas = Person::where('publish_status','publish')->get();

…….




とりあえずこれで、peopleテーブルの なかの、公開しているレコードを全部取得して、$peoplet_dataの中に入れてくれる(このレコードを納めた配列をコレクションという。)

で、この取ってきたデータは


return view('people.index', [
'request' => $request,
‘people_datas’ => $people_datas,
]);

という感じで、配列に入れてまとめてビューに渡してあげる。
ビュー側では

@foreach($peoplet_datas as data)
{{$data->people_name}}
@endforeach

というかんじでhtmlの中に埋め込んで使う。

@とか、{{$●●●}}とかはララベルのビューの記述方式。


@if($i == ‘ok’ )
OK
@endif

とか、だいたいわかると思います。

ビュー側では、ララベルの記述方式にしたがって、

{{}}
は、

<?= ?>

みたいなもの。
中身は自動的にエスケープして表示される。

エスケープさせたくない時は
{!! $name !!}
と書く。

ビューは名前をindex.blade.phpという感じでミドルネームに.bladeつけてあげて勝手に作っていい。
中身に上記の記述方式で変数を埋め込んでいく感じ。

ただ、保存する場所は決まっていて、
/project/resources/views/
の中。

フォルダ作る場合は、
/project/resources/views/people/index.blade.php
ということになり、
コントローラで渡す時は、ルーティング指定した時みたいに省略して
return view('people.index', [
]);
っていう風に書いています。

コレクションに対して、うっかりモデルに指定したメソッドを呼び出そうとしたりしてまうことがあるので、取得したのがオブジェクトなのかコレクションなのか注意すること。

参考文献:https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798052582

~この記事の著者~

サイト制作に関するご相談はこちら

 03-5961-5681 平日10:00~19:00

メールフォーム

あなたが
サイトに
求める要素
あなたがサイトに求める0要素