在Laravel中使用表单请求进行授权

时间:2015-12-22 20:16:26

标签: laravel laravel-5.1

我不确定我在这里做错了什么,但在检查编辑是否拥有帖子时,我无法将帖子的$ id传递给表单请求。 “工作”将是一份工作职位。以下是JobsRequest中的逻辑。

public function authorize()
{
    $job=Job::find($this->id);
    if($job->user_id == Auth::user()->id){
        return true;
    }else{
        return 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');
}

4 个答案:

答案 0 :(得分:1)

要获取FormRequest对象中的ID,您需要使用以下内容...

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

答案 1 :(得分: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;
}

答案 2 :(得分: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;

我觉得它运作得很好

答案 3 :(得分:0)

感谢您指点我正确的方向。我从文档中直接得到了..这对我有用。

new[new<=y][bp:length(new)] <- NA
new2 <- na.omit(new)