ちょっとしたLaravelメモ

f:id:utr066:20180321111851j:plain

Laravelのメモが見つかったので、ちょっと書いておこう。 Laravel懐かしいなあ。サービスプロバイダーとか最初意味わからなかったわ。

使うためには色々必要

laravelはライブラリをcomposerインストールしただけでは使えない。 providersやaliasに追加しないといけない。さらにコントローラーで使う場合には、最初の方にuseで指定しなければならない。 redirectとかも必要だから、なんかうまくいかないなあと思ったら確かめてみるといいかも。

use Activation;
use Mail;
use Sentinel;
use App\User;
use App\Http\Controllers\Controller;
use App\Notifications\RegisterNotify;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;

こんな感じになる。ORMでモデルを使う場合にもモデルの読み込みが必要。めんどい。

providers

サービスプロバイダーを利用して初期起動処理を行っている。 config/app.phpファイルのproviders配列がlaravelプロジェクトのためにロードされる。

  1. Laravelのコアサービスのサービスプロバイダー
  2. アプリケーション固有のサービスプロバイダー
  3. 自分で、Composerを使って追加したパッケージのサービスプロバイダー

これらがあるらしい。

middleware

状態をチェックするものらしい。アクションの前後に実行される。 例えば、ユーザーがログインしているかどうかなどの際に役立つ。

ユーザーが認証されていなければ、このミドルウェアはユーザーをログインページへリダイレクトします。反対にそのユーザーが認証済みであれば、そのリクエストがアプリケーションのその先へ進むことを許可します。

deviseでいうauthenticate_user!みたいなことをやってくれるみたい。laravelではそれをmiddlewareっていうのが担っているのかな。

変数の受け渡し

変数を一つ受け渡す場合はcompact関数又はwithメソッドで送信。
compactの方が可読性が高いのでそちらを使うことが多い。変数受け渡す記述わざわざしないといけないのか、めんどい。 compact関数の場合

testController.php
public function test() {

    $test_1 = "テスト";

    return view('test.normal',compact('test_1'));
}

withメソッドの場合

testController.php
public function test() {

    $test_1 = "テスト";

    return view('test.normal')->with('test_1',$test_1);

レコード作成

laravelでは簡単にレコード作成を許してくれない。 ①該当のモデルファイルに書き込むカラムを宣言する。これがないと値入らない。

    protected $fillable = [
        'name',
        'user_id',
    ];

②コントローラーの上の方に使うモデルを読み込む

use App\Upload;
use App\User;

③createメソッドでレコードを作成する。

  Upload::create([
    'name' => $filename,
    'user_id' => Auth::user()->id,
  ]);

ちょっとめんどい。

phpはデフォルトで2MBまでのアップロードしか許していないらしい

phpはデフォルトで2MB以上のファイルがアップロードできないみたいです。

いくらファイルアップロードの設定変更してもうまくいかないのはこれか・・・

public以下を読み込む設定になっている

Laravelはpublic以下のファイルを読み込むようになっている。 つまり、パスの指定はpublic以下から指定する。cssやjsの読み込み。

viewでphpを使う

viewでphpのロジックを記述する際は@を使って書くことができる。ifとか。

  @foreach($all_uploaded_files as $file)
        {{$file->user->name}}
  @endforeach

変数の展開は{{}}で行う。