Laravel背包 - 从crud控制器获取当前记录

时间:2017-05-09 08:31:52

标签: laravel backpack-for-laravel

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

所以

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

在人民控制器中

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

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

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

3 个答案:

答案 0 :(得分:0)

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

  

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

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

最好的答案是:

public function edit($id)
{
    return \App\Models\People::findOrFail($id);
}
祝你好运。

答案 1 :(得分:0)

好的,所以既然你使用背包看看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。

答案 2 :(得分:-1)

你需要对抗id的人,请尝试以下

public function setup($id) {
dd(\App\Models\People::find($id)->name);
}