2015-12-22 48 views
0

不確定我在這裏做了什麼錯誤,但是在檢查編輯人員是否擁有該帖子時,我無法獲取帖子的$ id傳遞給表單請求。 「工作」將是一份工作發佈。以下是JobsRequest中的邏輯。在Laravel中使用表單請求的授權

public function authorize() 
{ 
    $job=Job::find($this->id); 
    if($job->user_id == Auth::user()->id){ 
     return true; 
    }else{ 
     return false; 
    } 

上面一直返回爲false。在控制器的更新方法如下

public function update(JobsRequest $request, $id) 
{ 

    $job=Job::find($id); 
    $job_data=$request->all(); 
    $job->update($job_data); 

    return redirect('/jobs/'.$job->id.'/edit'); 
} 

回答

1

FormRequest對象中搶ID,你需要使用下面的...

$id = $this->route('id'); 
0

試試這個,它從獲取ID路由參數。

public function authorize(){ 

    $job_id = $this->route('id'); 

    $job=Job::find($job_id); 
    $user = $this->user(); 

    if($job->user_id == $user->id) return true; 
    return false; 
} 
+0

這是低質量隊列。請通過添加關於如何/爲什麼這會起作用的描述來增強您的答案。 –

+0

@Rohit Gupta請問什麼是低質量隊列? – Digitlimit

+0

系統自動確定某些帖子質量不好。然後由一些具有足夠代表性的用戶進行審查。如果其中三人投票刪除它,則會被刪除。 –

0

轉到AuthServiceProvider.php寫

$gate->define('show-product',function($user,$product){ 
     return $user->id==$product->customer_id; 
    }); 

然後寫你的控制器

$product= Product::find($id); 
     Auth::loginUsingId(3); 
     //Auth::logout(); 
     if(Gate::denies('update',$product)){ 
      App::abort('404','Product Not Found'); 
      } 
     // $this->authorize('update',$product); 
     return $product->name; 

我認爲這是可以正常使用

0

感謝您指出我在正確的方向。我從文檔中直接得到了這個。這對我有效。

$jobId = $this->route('jobs'); 
return Job::where('id', $jobId) 
      ->where('user_id', Auth::id())->exists();