3

在我的 crud 控制器中,我试图获取当前正在编辑的人的姓名。

所以

http://192.168.10.10/admin/people/93/edit

在人员 crud 控制器中

public function setup() {
dd(\App\Models\People::get()->first()->name)
}

这将返回第一个人而不是当前正在编辑的人。

如何返回当前人(本例中 id 为 93)

4

3 回答 3

1

好的,既然你使用了背包,请查看 CrudController 以查看该方法的外观:

public function edit($id)
    {   
        $this->crud->hasAccessOrFail('update');

        $this->data['entry'] = $this->crud->getEntry($id);
        $this->data['crud'] = $this->crud;
        $this->data['fields'] = $this->crud->getUpdateFields($id);

        $this->data['id'] = $id;

        return view('crud::edit', $this->data);
    }

所以现在您可以覆盖编辑功能并更改您想要的任何内容。如果您愿意,您甚至可以创建自定义编辑页面。

另一方面,设置通常用于添加诸如

$this->crud->addClause(...);

或者您甚至可以获取整个构造函数并将其放入 setup 方法中,因为 setup 调用如下所示:

public function __construct()
    {
        // call the setup function inside this closure to also have the request there
        // this way, developers can use things stored in session (auth variables, etc)
        $this->middleware(function ($request, $next) {
            $this->setup();

            return $next($request);
        });
    }

所以你可以做类似的事情\Auth::user()->id;

像这样工作也很正常。如果您只使用纯 laravel,您将只能访问您相应设置的路由中的当前 ID。

于 2017-05-17T12:38:09.400 回答
0

拉赫曼谈到了find($id)方法。如果要中止 404 异常,只需使用 method findOrFail($id)。在我看来这是更好的方法,因为find($id)->name可以抛出

“试图获取非对象错误的属性......”

findOrFail($id) 首先获取具有指定 ID 的用户。如果不存在,则抛出 404,而不是 500。

最佳答案是:

public function edit($id)
{
    return \App\Models\People::findOrFail($id);
}

祝你好运。

于 2017-05-09T08:50:29.860 回答
-1

你需要人反对身份证,试试下面

public function setup($id) {
dd(\App\Models\People::find($id)->name);
}
于 2017-05-09T08:34:38.800 回答