読者です 読者をやめる 読者になる 読者になる

【Larabel】FormHelperの生成

今回は下記のコード中の削除リンク部分をFormHelperとしてパーツ化する。

// resources/views/books/show.blade.php
@extends('layout')

@section('content')
  {{$book->title}}

{!! Form::open(['method' => 'delete', 'url' => ['books', $book->id]]) !!}      
  <input type='submit' value='削除'>
{!! Form::close() !!}

@endsection

Helper用のクラスを生成

// app/Http/helper.php
<?php

class Helper {

  /**
   * DELETE Action
   * @param $url
   * @return Form
   */
  public static function delete_form($url, $label = '削除'){
    $form = Form::open(['method' => 'DELETE', 'url' => $url]);
    $form .= Form::submit($label);
    $form .= Form::close();

    return $form;
  }
}

composer.jsonを編集し、作成したHelper.classがオートロードされるようにする。

// composer.json
"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": ["app/Http/helper.php"]

composerの設定を反映

$ composer dump-autoload


実装したHelperを利用してリファクタリング

// resources/views/books/index.blade.php
extends('layout')

@section('content')
  {{$book->title}}

{!! Helper::delete_form(['books', $book->id]) !!}