질문을 삭제하지 말아주세요.!
 
1
0
-1

public functionc __construct()

{

$this→middleware('checkmypost:modelname');

}

이렇게 컨트롤러상에서 미들웨어를 지정하고 뒤에 파라미터로 모델이름을 전달했습니다

미들웨어 에서는 전달받은 모델이름을 갖고 그 해당하는 모델에서 현재 url에 표시된 게시글이 자신이 작성한 글인지 판단하는 미들웨어를 작성했습니다

public function handle($request, Closure $next, $model)
{
$checker = \App\$model::where('id',request()->segments()[1])->first();
if(auth()->user()->id == $checker->user_id){
return $next($request);
}else{
if(auth()->user()->type == "admin"){
return $next($request);
}
return response()->view('pages.not_power');
}
}

그런데 아래와같은 오류가 나오는데 문법이 잘못된거 같은데 어떤식으로 사용해야 

컨트롤러에서 전달한 모델이름을 갖고 게시글을 정보를 얻을수있을까요??

컨트롤러에서 파라미터 전달방법이 잘못된 걸까요 ... 

검색해보고 안되서 메뉴얼 정독하다가 파라미터 전달 이란게 있어서 이거다 싶었는데,,

조언좀 부탁드리겠습니다 3일째 해매고있습니다ㅠㅠ

syntax error, unexpected '$model' (T_VARIABLE), expecting identifier (T_STRING)




    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      에러 메시지로 봐서는 문자열이 있어야 할 자리에 변수가 있어서 나는 에러로 보입니다.

      $modelName = '\App\\'.$model;
      
      $checker = resolve($modelName);
      
      $checker→where('id', ......// 이하 생략

      이런식으로 하시면 될 것 같아요.

      1. getahead92

        답변 감사합니다!! 그런데 resolve함수가 어떤 작용을 하는지좀 알려주시면 안될까요 ㅠㅠ? 

      CommentAdd your comment...