如何在Request Class里边获取 当前传入的id

如我的URL是这样的

domain.com/edit/123213123

但是我在Request里面需要做处理,但又不需要再控制器里面获取id
因为控制器里面的代码是这样的

public function update(Requests\DemoRequest $request,$id)
    {
        $Demo = Demo::findOrFail($id);
        $Demo->update($request->all());
        return redirect('/Demo');
    }

很显然如果是控制器里面 直接就可以用id拿到。
但是在DomeRequest里边的rule函数里边呢?


   public function rules()
    {
    
        return [
              'num_mark' => "required|digits:11,|unique:demotab,num_mark"'.$id.',_id',
            ];
        }

    }

如上述一样id肯定是拿不到的。
期间我试过了 input::get('id'),也是拿不到的。只能拿到我提交的数据。
去也用过Request 各种方法尝试还是没拿到。。。还用过route的一些方法也没拿到。。不知道是不是方法弄错了?还请指教

首先我不知道你的routes是怎么注册路由的这里说一下可能可以满足你的要求的解决方案

假设在routes文件当中我们声明了下面的路由注册

Route::resource('posts','PostsController');

这个时候我们如果使用php artisan route:list来查看的话可以看到我们在编辑的时候是提交到下面这条路由的:

'/posts/'.$post->id

也就是如果你是使用Route::post来注册路由会像这样

Route::post('/posts/{id}','PostsController@update')

那么这个时候我们在提交表单的时候在Requestrules()方法中可以这样

  public function rules()
    {
       $id = $this->route('posts');
        return [
        ];
    }

那么在你的例子中应该就是这样

 public function rules()
    {
       $id = $this->route('edit'); // 根据domain.com/edit/123213123 来的
        return [
        ];
    }

然后你看有没有满足你的需求。

JellyBool
修改的评论也不能少于六个字哦!
AGuier
修改的评论也不能少于六个字哦!
JellyBool
修改的评论也不能少于六个字哦!
AGuier
修改的评论也不能少于六个字哦!
AGuier
修改的评论也不能少于六个字哦!
JellyBool
修改的评论也不能少于六个字哦!
AGuier
修改的评论也不能少于六个字哦!