1년 정도 Laravel을 했기 때문에 개인적인 몰입과 게시판 제작!

안녕하세요.Advent Calendar가 처음이에요!😃
Advent Calendar 2019의 7일째 기사입니다.
지난해 6월부터 업무 중에 Laravel을 사용할 수 있도록 웹 시스템을 개발했다.집에서 복습할 때도 게시판을 만들었다.
일과 자신이 1년 정도 걸렸는데 개인적으로 느낀 라벨의 몰입점에 대한 정리와 간단한 실시, 제가 만든 게시판을 소개하고 싶습니다.

몰입도와 해결 방법


생각나는 것만 있어.사실 더 많은 일이 있을 텐데...
뭐 공부 해요?😓

암호화 키 오류가 설정되지 않았습니다.


시작 후 화면을 확인한 후 "No application encryption key has been specified."에 대한 오류 정보...
다음 명령으로 설치하면env의 APP_KEY는 값을 설정하여 정상적으로 작동할 수 있다.
php artisan key:generate

.env가 불러오지 않았습니다.


왜 그런지 모르겠어요.env를 읽을 수 없습니다. 전달된 매개 변수가 비어 오류가 발생했습니다.
htmlspecialchars() expects parameter 1 to be string, object given
bootstrap/cache/config.php의 캐시 파일을 삭제합니다.

게시할 때 오류가 발생합니다.


@csrf form에 넣는 것을 잊어버릴 가능성이 있기 때문에 미리 form 라벨에 넣으세요.
    <form action="{{ route('board.save') }}" method="POST" id="make_board" class="mt-3">
        @csrf
        <div class="form-group">

helper를 불러올 수 없습니다.


헬퍼를 만드는 프로젝트에서git로 원본을 찾은 후 시작하면 헬퍼가 없는 오류가 발생할 수 있습니다.
composer dump-autoload

해봤던 게시판 소개.


복습으로 해봤어요.로그인이 없는 것은 매우 간단한 것이다.
소스 여기 있다!🥳
https://github.com/YasuakiHirano/codelike_bbs

동작 확인


여기에 동작 환경을 배치해 봤어요!
=> http://codelikebbs.codelike.info/

기술 요점


FormRequest를 썼습니다.


게시판 저장을 검증할 때 다른 파일로 FormRequest를 만들어 사용하도록 조금만 노력하세요.
・ 검증용 양식 요청.
BoardCreateRequest.php(열기 클릭)
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class BoardCreateRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    /**
     * バリデーションルール
     * @return array
     */
    public function rules()
    {
        return [
            'board_title' => 'required|max:30',
            'user_name' => 'required|max:30',
            'about_text' => 'required|max:5000',
            'password' => 'required|max:30'
        ];
    }

    /**
     *  バリデーション項目名定義
     * @return array
     */
    public function attributes()
    {
        return [
            'board_title' => 'タイトル',
            'user_name' => '名前',
            'about_text' => '説明文',
            'password' => 'パスワード'
        ];
    }

    /**
     * バリデーションメッセージ
     * @return array
     */
    public function messages()
    {
        return [
            'board_title.required' => ':attributeを入力してください。',
            'board_title.max' => ':attributeは30文字以下で入力してください。',
            'user_name.required' => ':attributeを入力してください。',
            'user_name.max' => ':attributeは30文字以下で入力してください。',
            'about_text.required' => ':attributeを入力してください。',
            'about_text.max' => ':attributeは5000文字以下で入力してください。',
            'password.required' => ':attributeを入力してください。',
            'password.max' => ':attributeは30文字以下で入力してください。'
        ];
    }
}
위의 요청은 저장 방법에서 다음과 같이 사용됩니다.
방법을 요청할 때 검증하고 안 되면 돌려줘.
Controller에 쓰지 않아도 돼서 시원해요.😄
    /**
     * 新規掲示板保存
     * @param BoardCreateRequest $request
     * @return RedirectResponse
     */
    public function save(BoardCreateRequest $request)
    {
        /** @var Board $board */
        $board = new Board();
        $board->fill([
            'title' => $request->board_title,
            'user_name' => $request->user_name,
            'about_text' => $request->about_text,
            'password' => $request->password
        ])->save();

        return redirect()->route("top.index");
    }

라우팅 선택 시 이름을 입력하십시오.


쓸 때name를 추가하면form의 액션 지정과 화면 이동이 수월합니다.
아래와 같이 각각name을 더하면...
web.php
// 掲示板一覧[トップ]
Route::get('/', 'TopPage@index')->name("top.index");

// 掲示板作成
Route::get('/post', 'MakeBoard@index')->name("board.index");
Route::post('/post/save', 'MakeBoard@save')->name("board.save");

// 掲示板詳細
Route::get('/detail', 'DetailPage@index')->name("detail.index");
Route::post('/detail/response', 'DetailPage@makeResponse')->name("detail.response");
Route::post('/detail/delete', 'DetailPage@deleteBoard')->name("detail.delete");
form,link,redirect를 쓸 때route 조수는 아래와 같이 쉽게 호출할 수 있어서 좋습니다.
form 태그 위치
<form action="{{ route('board.save') }}" method="POST" id="make_board" class="mt-3">
링크 표시
    <div class="mt-3 mb-3 row justify-content-end">
        <a href="{{ route('board.index') }}" class="btn btn-primary mr-3">新規登録</a>
    </div>
redirect 장소
 return redirect()->route("top.index");

form의 입력부에 old를 넣어주세요.


old 조수를 사용하면 오류를 검증하는 경우에도 값이 폼에 유지되기 때문에 쉽게 사용할 수 있는 투고 폼이 됩니다.
old의 매개 변수에 텍스트 상자와 영역의name를 설정하면 됩니다!
게시물 양식의 일부
        <div class="form-group">
            <label for="board_title">タイトル</label>
            <input type="text" class="form-control" name="board_title" id="board_title" value="{{ old('board_title') }}" maxlength="140">
        </div>
        <div class="form-group">
            <label for="user_name" class="col-form-label">名前</label>
            <input type="text" class="form-control" name="user_name" id="user_name" value="{{ old('user_name') }}" maxlength="140">
        </div>

관련 링크


나는 자신의 블로그에 제작 과정을 썼다.
Laravel5.8로 게시판 만들기 (5)
Laravel5.8로 게시판 만들기 (4)
Laravel5.8로 게시판 만들기 (3)
Laravel5.8로 게시판 만들기 (2)
Laravel5.8로 게시판 만들기 (1)

다른 하고 싶은 일


이번에는 그러지 못하고 구상으로 다음과 같은 내용을 고려했다.
나는 앞으로 한번 설치해 보고 싶다.
・업무 중에 UseCase를 사용하였으나 이번에는 샘플에 편입되지 않았습니다.
• Laravel 로그인 기능 내장
·Api화, Nuxt.js와 합작하여 게시판을 제작하다.

끝날 때


이미 나온 내용이 졸렬한 보도인 것 같습니다. 끝까지 봐주셔서 감사합니다.😆
조금만 자극이 돼서 도움이 됐으면 좋겠어요.앞으로도 PHP 개발에서 Laravel을 적극 활용하겠습니다!

좋은 웹페이지 즐겨찾기