PHP Laravel 6 – CRUD 기본 with Bootstrap , Vue – 등록 (2)

2. 테이블에 값을 저장,읽고,수정,삭제 할수 있는 파일을 생성

$> php artisan make:controller TestCRUDController  –resource
Controller created successfully.

– 확인 
$> cd  /app/Http/Controllers
TestCRUDController.php

<?php

namespaceApp\Http\Controllers;

use Illuminate\Http\Request;

classTestCRUDControllerextendsController

{

/**

     * Display a listing of the resource.

     *

     * @return \Illuminate\Http\Response

     */

publicfunctionindex()

    {

//

    }

/**

     * Show the form for creating a new resource.

     *

     * @return \Illuminate\Http\Response

     */

publicfunctioncreate()

    {

//

    }

/**

     * Store a newly created resource in storage.

     *

     * @param  \Illuminate\Http\Request  $request

     * @return \Illuminate\Http\Response

     */

publicfunctionstore(Request$request)

    {

//

    }

/**

     * Display the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

publicfunctionshow($id)

    {

//

    }

/**

     * Show the form for editing the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

publicfunctionedit($id)

    {

//

    }

/**

     * Update the specified resource in storage.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

publicfunctionupdate(Request$request, $id)

    {

//

    }

/**

     * Remove the specified resource from storage.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

publicfunctiondestroy($id)

    {

//

    }

}

– 위 생성된  파일의 상단에 model namespace 를 import 시킨다. 

<?php

namespaceApp\Http\Controllers;

use Illuminate\Http\Request;

use App\TestCRUD;

classTestCRUDControllerextendsController

{

/**

– 편집 : 웹에 출력되는 화면을 아래와 같이 정의한다 
$> cd /routes
web.php

<?php

/*

|————————————————————————–

| Web Routes

|————————————————————————–

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the “web” middleware group. Now create something great!

|

*/

Route::get(‘/’, function () {

returnview(‘welcome’);

});

위 내용을 아래와 같이 편집 한다.

<?php

/*

|————————————————————————–

| Web Routes

|————————————————————————–

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the “web” middleware group. Now create something great!

|

*/

Route::get(‘/’, function () {

returnview(‘welcome’);

});

Route::resource(‘test_crud’, ‘TestCRUDController’);

– 확인 : 웹 브라우져에서 아래와 같이 실행해본다  ( http://도메인/test_crud )

– Bootstrap and Vue 사용을 위해 아래 명령을 실행
$> composer require laravel/ui –dev

Using version ^1.1 for laravel/ui

./composer.json has been updated

Loading composer repositories with package information

Updating dependencies (including require-dev)

Package operations: 1 install, 0 updates, 0 removals

  – Installing laravel/ui (v1.1.2): Loading from cache

Writing lock file

Generating optimized autoload files

> Illuminate\Foundation\ComposerScripts::postAutoloadDump

> @php artisan package:discover –ansi

Discovered Package: facade/ignition

Discovered Package: fideloper/proxy

Discovered Package: laravel/tinker

Discovered Package: laravel/ui

Discovered Package: nesbot/carbon

Discovered Package: nunomaduro/collision

Package manifest generated successfully.

– 아래 명령을 통해 vue 와 react 를 Frontend 화면에서 사용 할수있도록 한다.

> vue , react 의 일반적인 사용시 

$> php artisan ui vue

$> php artisan ui react

> vue , react 의 로그인과 회원가입 사용시

$> php artisan ui vue –auth

$> php artisan ui react –auth

( 참조 : 내 경우에는 위 4가지 명령을 모두 실행 시킴 )
–  blade 파일을 생성
$> cd /resources/views 

생성 파일 –  layout.blade.php

<!DOCTYPEhtml>

<htmllang=”en”>

<head>

<metacharset=”UTF-8″>

<metaname=”viewport”content=”width=device-width, initial-scale=1.0″>

<metahttp-equiv=”X-UA-Compatible”content=”ie=edge”>

<title>Laravel 6 CRUD 기본 sample</title>

<linkhref=”{{ asset(‘css/app.css’) }}”rel=”stylesheet”type=”text/css”/>

</head>

<body>

<divclass=”container”>

    @yield(‘content’)

</div>

<scriptsrc=”{{ asset(‘js/app.js’) }}”type=”text/js”></script>

</body>

</html>

해당 폴더(/resources/views )에 “test_view” 라는 폴더를 생성한다.
이후  test_view 폴더 속에 
생성 파일 –  insertform.blade.php 

@extends(‘layout’)

@section(‘content’)

<style>

.uper {

margin-top: 40px;

  }

</style>

<divclass=”card uper”>

<divclass=”card-header”>

<h1>Insert form test crud</h1>

</div>

<divclass=”card-body”>

    @if ($errors->any())

<divclass=”alert alert-danger”>

<ul>

            @foreach ($errors->all() as $error)

<li>{{ $error }}</li>

            @endforeach

</ul>

</div><br/>

    @endif

<formmethod=”post”action=”{{ route(‘test_crud.store’) }}”>

<divclass=”form-group”>

              @csrf

<labelfor=”title”>Title :</label>

<inputtype=”text”class=”form-control”name=”title”/>

</div>

<divclass=”form-group”>

<labelfor=”description”>Description :</label>

<textareaclass=”form-control”aria-label=”With textarea”name=”description”></textarea>

</div>

<buttontype=”submit”class=”btn btn-primary”>INSERT</button>

</form>

</div>

</div>

@endsection

– 컨트롤 파일(TestCRUDController) 편집 아래 참조

publicfunctioncreate()

    {

returnview(‘test_view.insertform’);

    }

– 확인 : 웹브라우져에서 실행 ( http://도메인/test_crud/create )

–  등록  DB 의 테이블에 값을 저장시 확인  ( 편집 파일 : TestCRUDController  )

publicfunctionstore(Request$request)

    {

$validatedData = $request->validate([

‘title’ => ‘required|max:100’,

‘description’ => ‘required’,

        ]);

$test = TestCRUD::create($validatedData);

returnredirect(‘/test_crud’)->with(‘success’, ‘test is successfully saved’);

    }

–  입력을 하지 않고  “INSERT” 버튼 눌러 실행하면 아래와 같이 됨

– 위 form 값을 정상적으로 넣고 실행시키면 아래와 같이 DB 의 테이블 결과를 얻을수 있음

소스 : https://github.com/nzhongtting/Laravel_hsh_board

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다