โง '๋ฉ๋ฉํ์ ๋ผ๋ผ๋ฒจ๋ก ์๋ก ๋ง๋ค๊ธฐ' ํ๋ก์ ํธ ๋ชฉ์ฐจ โง (๋ณด์๋ ค๋ฉด ์๋ ๋๋ณด๊ธฐ ๋ฅผ ๋๋ฌ์ฃผ์ธ์.)
0. ๋ผ๋ผ๋ฒจ(laravel) ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ-๋ฐฉ๋ฒ2 (Windows & ๋์ปค(docker) & sail ํ์ฉ)
2. ๊ธฐ์กด ์์ค๋ฅผ ํ๋์ ๋ธ๋ ์ด๋๋ก
5. ๊ธฐ์กด PHP ๋ก์ง์ ์ปจํธ๋กค๋ฌ๋ก
6. ๋ธ๋ ์ด๋ ๋ฌธ๋ฒ์ผ๋ก ์์
7. ์ธ๋ถ ๋ธ๋ ์ด๋ ํ์ผ, component ํ์ฉ
8. (DB) Model ๋ฐ ๊ธฐํ ํ์ผ ์์ฑ
9. (DB) ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ํ๊ธ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ
10. (DB) ๋ชจ๋ธ, DB ํ์ฉ ์ฐ์ต
11. (DB) ๊ธฐ์กด ๋ฐ์ดํฐ ๋ฐฐ์ด์ DB๋ก ๋ณํ
12. (DB) DB ๋ฐ ๋ชจ๋ธ์ ์ด์ฉํ์ฌ ๊ตฌํ
13. ๋ก๊ทธ์ธ ๊ตฌํ์ ์ํ ์คํํฐํคํธ Breeze ์ค์น ๋ฐ ๋ก๊ทธ์ธ ์์
14. ๋ก๊ทธ์ธ ์ฐฝ ๋ท๋ฐฐ๊ฒฝ๋ ๋์์์ด ๋ณด์ด๋๋ก ์์
15. ๊ด๋ฆฌ์ ํ๋ฉด์์ ์ ์ฒด ๊ฒ์๊ธ ๋ฆฌ์คํธ ํ๋ฒ์ ๋ณด๊ธฐ
16. ๊ด๋ฆฌ์ ํ๋ฉด์์ ๊ฒ์๊ธ ์์ ํ๊ธฐ
17. ๊ด๋ฆฌ์ ํ๋ฉด์์ ๊ฒ์๊ธ ์ญ์ ํ๊ธฐ
(์ด๋ฒ์ ์ฒ์ ๋ผ๋ผ๋ฒจ์ ๊ณต๋ถํ๋ฉด์ ๋ง๋๋ ๊ฒ์ด๋ผ ๋ง์ด ๋ถ์กฑํ ์ ์ฐธ๊ณ ๋ฐ๋๋๋ค.)
๊ธฐ์กด ์์ค ํ์ผ์ ์ง์ฐ๋ฉด์ ์์ ํ ๊น ํ๋ค๊ฐ ์ถํ ๊ณต๋ถ๋ฅผ ์ํด ๊ทธ๋๋ก ๋๋๊ณ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ์์ ํ์์ต๋๋ค. (์ฃผ์ - 14. ๋ก๊ทธ์ธ~~~ ๋ด์ฉ์์ ํ์ผ ์ด๋ฆ์ด ํท๊ฐ๋ ค์ ๊ทธ๋ฅ ๋งจ์ฒ์ ๋ง๋ค์๋ ํ์ผ ์ด๋ฆ์ผ๋ก ๋ชจ๋ ์์ค๋ฅผ ๋ณ๊ฒฝํ์ฌ ์์ ์ ํ๋, ๊ธฐ์กด ๋ฐฐ์ด ๋ฐฉ๋ฒ์ด ํ์์์ ๊ฒฝ์ฐ ์๋ ํ์ผ์ ์ง์ ์์ ํ์๊ธฐ ๋ฐ๋๋๋ค.)
< ๊ธฐ์กด ๋ฐฐ์ด ๋ฐฉ๋ฒ > | < DB, ๋ชจ๋ธ ์ด์ฉ ๋ฐฉ๋ฒ > | |||||||
Route::get('/view', [IndexController::class, 'index']); | ๋ผ์ฐํธ | Route::get('/', [PostController::class, 'index']); | ||||||
IndexController | ์ปจํธ๋กค๋ฌ | PostController | ||||||
index.blade.php layerhelps.blade.php components/newpanel.blade.php components/panes.blade.php |
๋ทฐ | index2.blade.php components/layerhelps2.blade.php components/newpanel2.blade.php components/panes2.blade.php |
||||||
header.blade.php | ๊ณตํต | header.blade.php |
1. ์ปจํธ๋กค๋ฌ์์ ๋ค๋ฅธ ๋ถ๋ถ
๋น์ฐํ ์์ค ์์ ๋ด์ฉ์ ๋ฃ๋ ๊ฒ ๋ณด๋ค๋ DB์์ ๋ด์ฉ์ ๋ถ๋ฌ์ค๋ ์์ค๊ฐ ํจ์ฌ ๊ฐ๋จํจ. | |
array($arr_count, "< ์น์ ์ด์ฉํ ์ ํธ๋ค >"),
array(
"2022-07-01", "2.0", "ํ๋ถ๋ชจ ์๋ด ์์ฝ ์์คํ
(2ํ๊ธฐ ์ด์ ์์)",
~~~~~~~~~~~~~~~์ค๊ฐ ์๋ต~~~~~~~~~~~~~~~~~ |
$categories = Category::all();
$posts = Post::all();
|
์๋ ๋ด์ฉ์ 30์ผ ์ด๋ด์ ์ต์ ๊ฒ์๋ฌผ์ ๋ฐ๋ก ๋ฐฐ์ด๋ก ๋ง๋ค์ด ์ฃผ๋ ๋ถ๋ถ์ธ๋ฐ, DB์์๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ ํ๋๋ก ๊ตฌํ ๊ฐ๋ฅ
|
|
$new_arr = array();
$timenow = date("Ymd");
for ($m = 1; $m <= $arr_count; $m++) {
$tmparr = ${"arr_$m"};
for ($n = 1; $n < sizeof($tmparr); $n++) {
$timetarget = $tmparr[$n][0];
$dateDifference = abs(strtotime($timenow) - strtotime($timetarget));
$days = floor($dateDifference / (60 * 60 * 24));
if ($days < 30) {
array_push($tmparr[$n], $tmparr[0][0], $n);
array_push($new_arr, $tmparr[$n]);
}
}
}
for ($k = 0; $k < sizeof($new_arr) - 1; $k++) {
for ($a = $k + 1; $a < sizeof($new_arr); $a++) {
if ($new_arr[$k][0] < $new_arr[$a][0]) {
$tmp = $new_arr[$k];
$new_arr[$k] = $new_arr[$a];
$new_arr[$a] = $tmp;
}
}
}
|
$newposts = Post::where('created', '>=', Carbon::now()->subMonth())->get();
|
๋ฆฌํด๊ฐ
|
|
return view('index', [
'select_movie' => $select_movie,
'arr_count' => $arr_count,
'arr_1' => $arr_1,
'arr_2' => $arr_2,
'arr_3' => $arr_3,
'arr_4' => $arr_4,
'arr_5' => $arr_5,
'arr_6' => $arr_6,
'arr_7' => $arr_7,
'new_arr' => $new_arr,
'timenow' => $timenow,
]);
|
return view('index2', [
'select_movie' => $select_movie,
'posts' => $posts,
'newposts' => $newposts,
'categories' => $categories,
]);
|
2. index.blade.php <-> index2.blade.php ๋ค๋ฅธ ๋ถ๋ถ
index.blade.php | index2.blade.php |
~~~~~~~~~~~~์๋จ ์๋ต~~~~~~~~~~~~ <x-newpanel :new_arr="$new_arr"/>
<p><br></p>
@for ($k = 1; $k <= $arr_count; $k++)
@php
$arr = ${"arr_$k"};
@endphp
<x-panel :arr="$arr" :k="$k" :timenow="$timenow"/>
<!--๋ ์ด์ด ๋์๋ง-->
@include('layerhelp')
<p><br></p>
@endfor
~~~~~~~~~~~~ํ๋จ ์๋ต~~~~~~~~~~~~
|
~~~~~~~~~~~~์๋จ ์๋ต~~~~~~~~~~~~
<x-newpanel2 :newposts="$newposts"/> <p><br></p>
@for ($k = 1; $k <= ($categories->count()); $k++)
@php
$post = $posts->where('category_id', $k);
@endphp
<x-panel2 :post="$post" :category="$categories[$k-1]->name" :k="$k"/>
<p><br></p>
@endfor
@for ($k = 1; $k <= ($categories->count()); $k++)
@php
$post = $posts->where('category_id', $k);
@endphp
<!--๋ ์ด์ด ๋์๋ง-->
<x-layerhelp2 :post="$post" :k="$k"/>
@endfor
~~~~~~~~~~~~ํ๋จ ์๋ต~~~~~~~~~~~~
|
3. newpanel.blade.php <-> newpanel2.blade.php ๋ค๋ฅธ ๋ถ๋ถ
newpanel.blade.php | newpanel2.blade.php |
@props(['new_arr'])
~~~~~~~~~~~~์ค๊ฐ ์๋ต~~~~~~~~~~~~ @for ($k = 0; $k < sizeof($new_arr); $k++)
<p>
<a href='{{ $new_arr[$k][3] }}' target='_Blank' class='data'
idx='{{ $new_arr[$k][7] }}_{{ $new_arr[$k][8] }}'>
<img src='/images/ball.gif'>
{{ $new_arr[$k][2] }} V{{ $new_arr[$k][1] }} ({{ $new_arr[$k][0] }})
</a>
@if ($new_arr[$k][4] != '')
<a href='{{ $new_arr[$k][4] }}' target='_Blank'><img src='/images/youtube1.png'
width=50></a>
@endif
=> {{ $new_arr[$k][5] }}
</p>
@endfor
~~~~~~~~~~~~ํ๋จ ์๋ต~~~~~~~~~~~~ |
@props(['newposts'])
~~~~~~~~~~~~์ค๊ฐ ์๋ต~~~~~~~~~~~~ @foreach ( $newposts as $newpost)
<p>
<a href='{{ $newpost->link_blog }}' target='_Blank' class='data'>
<img src='/images/ball.gif'>
{{ $newpost->title }} V{{ $newpost->version }} ({{ $newpost->created }})
</a>
@if ($newpost->link_youtube != '')
<a href='{{ $newpost->link_youtube }}' target='_Blank'><img src='/images/youtube1.png'
width=50></a>
@endif
=> {{ $newpost->excerpt }}
</p>
@endforeach
~~~~~~~~~~~~ํ๋จ ์๋ต~~~~~~~~~~~~ |
4. panel.blade.php <-> panel2.blade.php ๋ค๋ฅธ ๋ถ๋ถ
panel.blade.php | panel2.blade.php |
@props(['arr','k','timenow'])
<div class='p{{ $arr[0][0] }}' style='left: 0px;width:100%;'>
<br>
<table border=0 cellspacing=0 cellpadding=0 width=90% align=center class=aa>
<tr>
<td>
<p align=center class='p_title'>
<b>
{{ $arr[0][1] }}
</b>
</p>
</td>
</tr>
</table>
<table border=0 width=90% align=center>
<tr>
<td> </td>
</tr>
<tr>
<td style='text-indent:-3em; padding:10px 10px 10px 60px;'>
@for ($i = 1; $i < sizeof($arr); $i++)
<p>
<a href='{{ $arr[$i][3] }}' target='_Blank' class='data'
idx='{{ $arr[0][0] }}_{{ $i }}'>
<img src='/images/ball.gif'>
@php
$timetarget = $arr[$i][0];
$dateDifference = abs(strtotime($timenow) - strtotime($timetarget));
$days = floor($dateDifference / (60 * 60 * 24));
@endphp
@if ($days < 30)
<img src='/images/new.gif' width=30>
@endif
{{ $arr[$i][2] }} V{{ $arr[$i][1] }} ({{ $arr[$i][0] }})
</a>
@if ($arr[$i][4] != '')
<a href='{{ $arr[$i][4] }}' target='_Blank'><img src='/images/youtube1.png' width=50></a>
@endif
=> {{ $arr[$i][5] }}
</p>
@endfor
<br>
</td>
</tr>
</table>
</div>
|
@props(['post','category','k'])
<div class='p{{ $k }}' style='left: 0px;width:100%;'>
<br>
<table border=0 cellspacing=0 cellpadding=0 width=90% align=center class=aa>
<tr>
<td>
<p align=center class='p_title'>
<b>
{{ $category }}
</b>
</p>
</td>
</tr>
</table>
<table border=0 width=90% align=center>
<tr>
<td> </td>
</tr>
<tr>
<td style='text-indent:-3em; padding:10px 10px 10px 60px;'>
@foreach ( $post as $post_one)
<p>
<a href='{{ $post_one->link_blog }}' target='_Blank' class='data'
idx='{{ $k }}_{{ ($loop->index)+1 }}'>
<img src='/images/ball.gif'>
@php
$timenow = date("Ymd");
$timetarget = $post_one->created;
$dateDifference = abs(strtotime($timenow) - strtotime($timetarget));
$days = floor($dateDifference / (60 * 60 * 24));
@endphp
@if ($days < 30)
<img src='/images/new.gif' width=30>
@endif
{{ $post_one->title }} V{{ $post_one->version }} ({{ $post_one->created }})
</a>
@if ($post_one->link_youtube != '')
<a href='{{ $post_one->link_youtube }}' target='_Blank'><img src='/images/youtube1.png' width=50></a>
@endif
=> {{ $post_one->excerpt }}
</p>
@endforeach
<br>
</td>
</tr>
</table>
</div>
|
5. layerhelp.blade.php <-> components/layerhelp2.blade.php ๋ค๋ฅธ ๋ถ๋ถ
layerhelp.blade | components/layerhelp2.blade |
@for ($j = 1; $j < sizeof($arr); $j++)
<div id='divLayer_{{ $k }}_{{ $j }}' class='overLayer'>
<br>
<div class='content'>
<strong><span id='content'>์ ๋ชฉ</span></strong>
<br><br>
{!! $arr[$j][6] !!}
</div>
</div>
@endfor
|
@props(['post','k'])
@foreach ( $post as $post_one)
<div id='divLayer_{{ $k }}_{{ ($loop->index)+1 }}' class='overLayer'>
<br>
<div class='content'>
<strong><span id='content'>์ ๋ชฉ</span></strong>
<br><br>
{!! $post_one->body !!}
</div>
</div>
@endforeach
|
6. ๋๋ ์
์ฒ์์๋ ๋๋ฌด ์์ํ๋ ๋ผ๋ผ๋ฒจ์ ORM(Object Relational Mapper, Active Record Pattern ์ ๊ตฌํ์ฒด)์ธ ์๋กํํธ(eloquent)๋ฅผ ์กฐ๊ธ์ฉ ์ธ ์ค ์๊ฒ ๋๋ ์์ DB๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๋ณด๋ค ํจ์ฌ ์ง๊ด์ ์ด๊ณ , ์ฝ๋ค๋ ๊ฒ์ ๋๋ผ๊ฒ ๋จ.
๐บ๐บ ์์ ํ ๋ชจ๋ ์์ค๋ ์๋ ๋งํฌ์์ ํ์ธํ์ค ์ ์์ต๋๋ค. ๐บ๐บ
https://github.com/mmssem/munghome
GitHub - mmssem/munghome
Contribute to mmssem/munghome development by creating an account on GitHub.
github.com