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 를 입력하지 않아서 넘어가지 않았습니다
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
"no message"로 찾아보니 라우트 문제가 있을 것 같습니다.
- 위 링크한 글에 의하면 "입력 화면에 대한 라우팅이
POST
밖에 규정되어 있지 않을 경우MethodNotAllowedHttpException
예외가 떨어진다"고 하는데 이때 no message가 뜰 수 있다고 합니다. 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
- 위 링크한 글에 의하면 "입력 화면에 대한 라우팅이
댓글 입력