如何在Laravel Backpack中使用setup()之外的addClause()?

时间:2018-03-27 12:00:42

标签: backpack-for-laravel

假设我们有UserCrudController这样:

public function setup()
{
    // ...
    // This works:
    $this->crud->addClause('active');
    // ...
}

addClause()工作正常。现在说我们将其添加到setup()

之外
public function posts()
{
    // ...
    // This DOES NOT work:
    $this->crud->addClause('active');
    // ...
}

像这样在外面调用addClause()有效,但如果它在逻辑内部,它不会:

public function setup()
{
    // This works:
    $this->applyQueries();
}

private function applyQueries()
{
    // This works:
    $this->crud->addClause('active');

    // This DOES NOT work:
    if (true)
        $this->crud->addClause('active');
}

回顾:我需要从另一个函数和逻辑内部调用addClause()。怎么样?

1 个答案:

答案 0 :(得分:0)

如果你正在创建一个自定义方法,那么Backpack无法知道你想在该方法中做什么。除了在setup()中调用__constructor()中的内容之外,只会在其中编写内容。

根据你的使用案例(list / create / edit / preview / etc),我建议你看看Backpack的CrudController里面的逻辑。其中的方法包含上述操作的逻辑,并使用addClause()。复制粘贴您posts()方法所需的任何内容。您基本上可以通过利用$this->crud对象来使用添加了子句的查询,因此查询将为$this->crud->query