フロントにおけるLaravel Laravel.hiroshima
by
Haruki Tazoe
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ϑϩϯτʹ͓͚ΔLaravel 2019/11/24 Laravel.hiroshima vol.2
Slide 2
Slide 2 text
Laravel.hiroshima ౡͰLaravelΛͬͱΓ্͍͛ͨͱ͍͏ؾ࣋ ͔ͪΒൃͨ͠ษڧձίϛϡχςΟͰ͢ɻ • ༰࠲ஊձɺ͘͘ձɺLTձͳͲ… • ࠓճͰ2ճ
Slide 3
Slide 3 text
Laravel.hiroshima ͜ͷษڧձϘϥϯςΟΞϕʔεͰߦ͓ͬͯΓɺ ࣝͷγΣΞɾॿ͚߹͍ͰΓཱ͍ͬͯ·͢ɻ ࢀՃͷࡍ͝ཧղɾ͝ڠྗΛ͓ئ͍͍ͨ͠· ͢ɻ
Slide 4
Slide 4 text
Laravelͱ
Slide 5
Slide 5 text
20116݄ʹϦϦʔε͞ΕͨɺΦʔϓϯιʔεͷ PHPϑϨʔϜϫʔΫɻ ιʔείʔυGithubʹϗεςΟϯά͞Ε͍ͯ ͯɺGithubͰͷελʔ֫ಘ͕PHPϑϨʔϜ ϫʔΫͷதͰ࠷ଟ͍ɻ
Slide 6
Slide 6 text
ϑϩϯτʹ͓͚ΔLaravel
Slide 7
Slide 7 text
1.BladeςϯϓϨʔτ
Slide 8
Slide 8 text
BladeςϯϓϨʔτͱ Bladeγϯϓϧͳ͕ΒύϫϑϧͳLaravelͷς ϯϓϨʔτΤϯδϯͰ͢ɻଞͷਓؾͷ͋ΔPHP ςϯϓϨʔτͱҟͳΓɺϏϡʔͷதʹPHPΛ هड़͢Δ͜ͱΛڐ͍ͯ͠·͢ɻ
Slide 9
Slide 9 text
BladeςϯϓϨʔτͱ BladeϏϡʔʹ.blade.phpϑΝΠϧ֦ுࢠΛ ͚ͭɺ௨ৗresources/viewsσΟϨΫτϦͷத ʹઃஔ͠·͢ɻ
Slide 10
Slide 10 text
ͳʹ͕ศརͳͷʁ
Slide 11
Slide 11 text
2.ςϯϓϨʔτͷܧঝ
Slide 12
Slide 12 text
2-1.ϨΠΞτఆٛ
Slide 13
Slide 13 text
αϯϓϧίʔυ αϯϓϧΞϓϦ - @yield(‘title’) @section(‘sidebar’) ͕͜͜ϝΠϯͷαΠυόʔ @show
@yield(‘content’)
Slide 14
Slide 14 text
@section໊લ͕ࣔ͢ͱ͓Γʹίϯςϯπͷη ΫγϣϯΛఆٛ͠ɺҰํͷ@yieldࢦఆͨ͠η Ϋγϣϯͷ༰Λදࣔ͢ΔͨΊʹ༻͠·͢ɻ
Slide 15
Slide 15 text
2-2.ϨΠΞτ֦ு
Slide 16
Slide 16 text
ࢠͷϏϡʔΛఆٛ͢Δʹɺʮܧঝʯ͢ΔϨΠ ΞτΛࢦఆ͢ΔɺBlade@extendsΛ༻͠· ͢ɻBladeϨΠΞτΛ֦ு͢ΔϏϡʔɺ @sectionΛ༻͠ɺϨΠΞτͷηΫγϣϯʹ ༰Λૠೖ͠·͢ɻ·ͨɺϨΠΞτͰηΫ γϣϯΛදࣔ͢Δʹ@yieldΛ༻͠·͢ɻ
Slide 17
Slide 17 text
αϯϓϧίʔυ @extends('layouts.app') @section('title', 'Page Title') @section('sidebar') @@parent
͜͜ϝΠϯͷαΠυόʔʹՃ͞ΕΔ
@endsection @section('content')
͕͜͜ຊจͷίϯςϯπ
@endsection
Slide 18
Slide 18 text
sidebarηΫγϣϯͰɺϨΠΞτͷαΠυ όʔͷ༰Λίϯςϯπʹ্ॻ͖͢ΔͷͰͳ ͘Ճ͢ΔͨΊʹ@@parentΛ༻͍ͯ͠·͢ɻ @@parentϏϡʔΛϨϯμ͢Δͱ͖ʹɺϨΠ Ξτͷ༰ʹஔ͖ΘΓ·͢ɻ
Slide 19
Slide 19 text
3.σʔλදࣔ
Slide 20
Slide 20 text
αϯϓϧίʔυ Route::get('greeting', function () { return view('welcome', ['name' => 'Samantha']); }); Hello, {{ $name }}. BladeςϯϓϨʔτʹ͢ʹ…
Slide 21
Slide 21 text
Bladeͷ{{ }}ه๏XSS߈ܸΛ͙ͨΊɺࣗಈత ʹPHPͷhtmlspecialcharsؔΛ௨͞Ε·͢ɻ Ϗϡʔʹ͞Εͨมͷ༰Λදࣔ͢Δ͚ͩʹ ݶΒͣɺPHPؔͷ݁ՌΛecho͢Δ͜ͱͰ͖ ·͢ɻ The current UNIX timestamp is {{ time() }} .
Slide 22
Slide 22 text
σʔλΛΤεέʔϓͨ͘͠ͳ͍߹ɺҎԼͷ ߏจΛ༻͍ͯͩ͘͠͞ɻ Hello, {!! $name !!}.
Slide 23
Slide 23 text
4.੍ޚߏจ
Slide 24
Slide 24 text
4-1.Ifจ
Slide 25
Slide 25 text
αϯϓϧίʔυ @if (count($records) === 1) ̍Ϩίʔυ͋Δʂ @elseif (count($records) > 1) ෳϨίʔυ͋Δʂ @else Ϩίʔυ͕ͳ͍ʂ @endif
Slide 26
Slide 26 text
ifจͷߏจʹɺ@ifɺ@elseifɺ@elseɺ@endif Λ༻͠·͢ɻ͜ΕΒͷ͍ํPHPͷߏจͱ ಉ͡Ͱ͢ɻ
Slide 27
Slide 27 text
@issetͱ@emptyɺಉ໊ͷPHPؔͷศརͳ γϣʔτΧοτͱͯ͠༻Ͱ͖·͢ɻ @isset($records) // $recordsఆٛࡁΈͰnullͰͳ͍ @endisset @empty($records) // $records͕ʮۭʯͩ @endempty
Slide 28
Slide 28 text
4-2.Switchจ
Slide 29
Slide 29 text
αϯϓϧίʔυ @switch($i) @case(1) ࠷ॳͷέʔε @break @case(2) ̎൪Ίͷέʔε @break @default σϑΥϧτͷέʔε @endswitch
Slide 30
Slide 30 text
@switchɺ@caseɺ@breakɺ@defaultɺ @endswitchΛ༻͠ɺSwitchจΛߏͰ͖· ͢ɻ
Slide 31
Slide 31 text
4-3.܁Γฦ͠
Slide 32
Slide 32 text
αϯϓϧίʔυ @for ($i = 0; $i < 10; $i++) ݱࡏͷɿ {{ $i }} @endfor @foreach ($users as $user)
͜Ε {{ $user->id }} ϢʔβʔͰ͢ɻ
@endforeach @forelse ($users as $user)
{{ $user->name }}
@empty
Ϣʔβʔͳ͠
@endforelse @while (true)
ແݶϧʔϓத
@endwhile
Slide 33
Slide 33 text
5.ϑΥʔϜ
Slide 34
Slide 34 text
5-1.CSRFϑΟʔϧυ
Slide 35
Slide 35 text
ΞϓϦέʔγϣϯͰHTMLϑΥʔϜΛఆٛ͢Δ ߹ɺCSRFอޢϛυϧΣΞ͕ϦΫΤετΛݕ ࠪͰ͖ΔΑ͏ʹ͢ΔͨΊɺӅ͠CSRFτʔΫϯ ϑΟʔϧυΛؚΊΔඞཁ͕͋Γ·͢ɻ͜ΕΛ @csrfΛ༻ͯ͠ߦ͍·͢ɻ @csrf ...
Slide 36
Slide 36 text
5-2.MethodϑΟʔϧυ
Slide 37
Slide 37 text
HTMLϑΥʔϜͰɺPUTɺPATCHɺDELETEϦ ΫΤετΛ࡞Ͱ͖ͳ͍ͨΊɺݟ্͔͚ͷHTTP ಈࢺΛࢦఆ͢ΔͨΊͷ_methodϑΟʔϧυΛ Ճ͢Δඞཁ͕͋Γ·͢ɻ@methodͰ͜ͷϑΟʔ ϧυΛੜͰ͖·͢ɻ @method('PUT') ...
Slide 38
Slide 38 text
5-3.όϦσʔγϣϯΤϥʔ
Slide 39
Slide 39 text
@errorɺࢦఆͨ͠ଐੑͷόϦσʔγϣϯΤ ϥʔϝοηʔδ͕͋Δ͔Λ؆୯ʹఆ͢ΔͨΊ ʹ༻͠·͢ɻ@errorͷதͰΤϥʔϝοηʔδ Λදࣔ͢ΔͨΊʹɺ$messageมΛΤίʔ͢ Δ͜ͱՄೳͰ͢ɻ
Slide 40
Slide 40 text
αϯϓϧίʔυ Post Title @error('title')
{{ $message }}
@enderror
Slide 41
Slide 41 text
6.αϒϏϡʔͷಡΈࠐΈ
Slide 42
Slide 42 text
Bladeͷ@includeΛ͑ɺϏϡʔͷத͔Β؆ ୯ʹଞͷBladeϏϡʔΛऔΓࠐΊ·͢ɻಡΈࠐΈ ݩͷϏϡʔͰඞཁͳมɺऔΓࠐΈઌͷ ϏϡʔͰར༻ՄೳͰ͢ɻ
@include('shared.errors')
Slide 43
Slide 43 text
·ͱΊ
Slide 44
Slide 44 text
Bladeศརʂʂ
Slide 45
Slide 45 text
ࢀߟ https://readouble.com/laravel/6.x/ja/blade.html