laravel 게시글 등록 시 no messege 에러로 등록이 안됨

조회수 629회

디버깅을 돌려보니 네임값을 다 못받아오는 거 같기도 하고 DB에 제대로 게시글 등록이 안돼서 질문드립니다.

//게시글 작성하기
    Route::post('/list/create/contents', 'Board\BoardController@createContents')->name('board.create.contents');

            <form action="{{route('board.create.contents')}}" method="post" class="contentsForm">
                <article>
                    <div class="boardContentInfo">
                        <div class="boardWrtTitle">
                            <span>이름</span>
                            <p>{{login()->user()->user_nm}}</p>
                        </div>
                        <div class="boardWrtTitle">
                            <span>말머리</span>
                            <select name="category">
                                <option>- 구분 선택 -</option>
                                <option value="문의">문의</option>
                            </select>
                            <div class="QnAWrtEx">
                                <p>해당 글은 비밀글로만 작성됩니다.</p>
                            </div>
                            <div class="boardWrtTitle">
                                <span>제목</span>
                                <input type="text" name="subject" style="width: 80%;" />
                            </div>
                        </div>
                    </div>
                    <div class="boardContentDetail">
                        <div>
                            <textarea id="contents" name="contents"></textarea>
                        </div>
                    </div>
                </article>
                <input type="submit" value="등록"/>
            </form>
<?php
//게시글 등록 시 받는 리퀘스트 정의
namespace App\Http\Main\Board\Domains\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    public function rules(){
        return [
            'writer' => 'required|string',
            'subject' => 'required|string',
            'contents' => 'required|string',
            'category' => 'required|string',
        ];
    }

    public function attributes() {
        return [
            'writer' => '작성자',
            'subject' => '제목',
            'contents' => '내용',
            'category' => '머릿말',
        ];
    }
}
    //게시글 등록 컨트롤러
    public function createContents(BoardContentsCreateRequest $request){
        $contents = $this->boardService->CreateContents($request->all());
        return redirect()->back()->with("alert","게시글이 등록되었습니다.");
    }
//게시글 등록 서비스
    public function CreateContents($datas){
        return $contents = BoardContent::create([
            "writer" => Login::user()->user_nm,
            "subject" => $datas["subject"],
            "contents" => $datas["contents"],
            "category" => $datas["category"],
            "reg_dt" => now(),
            "ip"=> request()->ip(),
            "notice_yn" => "0",
            "reg_id" => Login::user()->user_id
        ]);
    }

어떻게 등록해야되는지를 모르겠네요;; 라우트에서 createContents를 실행못하는거 같기도 하구요

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 해결했습니다. 폼에 @csrf 를 입력하지 않아서 넘어가지 않았습니다

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 오 나중에 도움이 될것같은 정보네요 감사합니다. 엽토군 2018.9.3 23:00
  • "no message"로 찾아보니 라우트 문제가 있을 것 같습니다.

    1. 위 링크한 글에 의하면 "입력 화면에 대한 라우팅이 POST밖에 규정되어 있지 않을 경우 MethodNotAllowedHttpException 예외가 떨어진다"고 하는데 이때 no message가 뜰 수 있다고 합니다.
    2. routes/web.php에서 BoardController의 네임스페이스가 Board\BoardController로 되어 있는데, 폼리퀘스트 클래스는 App\Http\Main\Board 아래의 네임스페이스로 들어가 있네요. 게시판 컨트롤러도 대충 App\Http\Main\Board를 포함해야 되는 것 아닌지요? use ... as 구문을 사용하고 있는 게 아니라면 그 부분도 확인해 보셔야 할 거 같네요.
    • 게시글 작성 외 게시글 리스트, 게시글 상세보기 역시 컨트롤러가 같아서 아무 문제가 없습니다. 같은 컨트롤러 단이라서 라우트에서 호출하는게 문제라면 리스트랑 상세보기도 안되어야할텐데 작성하기를 호출할때만 호출이 안되는지 게시글 작성이 안되네요 알 수 없는 사용자 2018.9.3 11:09
    • 디버깅 돌려보면 라우트에서 request까지 받아오는데... 함수를 실행하지 못하는지 아니면 실행됐는데 뭔가 이상이 있어서 결과가 안나오는거 같습니다 ㅠㅠ 알 수 없는 사용자 2018.9.3 11:33
    • 아니면... rules가 있는데 validate를 안해서...? 저도 폼검증은 안써봐서 모르겠네요 ㅠ 엽토군 2018.9.3 12:07
    • 폼 검증을 안거치고 그냥 다이렉트 리퀘스트로 받아도 아에 web.php에서 받은 라우트 함수가 실행이 안되는가봐요 흑흑 ㅠㅠ 알 수 없는 사용자 2018.9.3 12:24
    • 정확히는 지금 폼을 제출하면 그냥 새로고침만 됩니다... Route::post('/list/create/contents', 'Board\BoardController@createContents')->name('board.create.contents');에서 BoardController@함수명 에 아무거나 써도 에러가 안뜨는걸 보니 함수 자체가 콜링이 안되는거 같아요 ㅠㅠ; 알 수 없는 사용자 2018.9.3 12:29
    • 해결했습니다. @csrf 를 입력하지 않아서 넘어가지 않았습니다 답변해주셔서 감사합니다. 알 수 없는 사용자 2018.9.3 14:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)