laravel と Railsの比較-1 忘備録

どちらもMVCで構成される

routing

laravelは、routeフォルダがある。

基本web.phpでroutingをしていると考えて良い

確認コマンドは、

php artisan route:list

書き方の基本

Route::get(アドレス, 関数);

第一引数にアドレス、第二引数には関数

Route::get('/home', 'HomeController@index')->name('home');

これだと、ルート直下のhomeディレクトリと、HomeControllerのindex アクションが呼ばれている indexアクションは以下

 public function index()
    {
        return view('home');
    }

ここでviewの homeを返却している

ここで resources>view>home.blade.phpが呼ばれる。

このbladeというのは、テンプレートエンジン。 部分テンプレートを出力してくれる。

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Dashboard</div>

                <div class="panel-body">
                    @if (session('status'))
                        <div class="alert alert-success">
                            {{ session('status') }}
                        </div>
                    @endif

                    You are logged in!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

@section

@section()~ @endsection は継承することができる。部分テンプレートのイメージ。

@if(条件)は、コントローラーから渡した変数が利用できる

PHPのように<?php と書かなくても@ だけ書けば良い。

{{ session('status') }}

はecho session('status') と同じ意味

@extendsは継承元を記載する。また書きます。


railsのrouting

railsは config>routes にある。

コマンドはurlより

ホームのurl/rails/info/routes

で確認するほうがわかりやすい。

Controller

laravelはapp>Http>Controller

にある。

railsはapp>controller

コンストラクタの書き方

phpは

__construct()と記載する

アンダーバー2つ コンストラクタはnewするだけで自動的に実行される。

rubyは

initialize()

SASSの設定

アプリケーション直下の composer.js に記載する

"require-dev": {
    "filp/whoops": "~2.0",
    "symfony/thanks": "^1.0",
    "panique/laravel-sass": "dev-master"
},

public>index.php に以下を記載

SassCompiler::run("scss/", "css/");

public>scss フォルダを作成

composer update を実行