代码之家  ›  专栏  ›  技术社区  ›  user1555112

Cakephp 3.6。如何从控制器调用helpers查询?

  •  1
  • user1555112  · 技术社区  · 6 年前

    我在我的主页上有一个小的搜索表单,其中有一个类别列表。 我使用助手查询数据库以获取所有类别。这很好,效果很好。

    现在,我想使用基于已执行搜索的更新类别列表来更新类别选择。

    这意味着,我需要使用给定的$变量在助手内调用query来运行新查询并返回新数据。

    但这是我现在关心的问题。 我不能从页面控制器中调用助手,对吗?

    那么,正确的方法是什么 -在选择DB数据的所有视图中动态使用帮助器调用? -处理对控制器的ajax调用并使用来自帮助器的查询?

    如有任何建议,我们将不胜感激! 谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ilie Pandia    6 年前

    简短回答:

    如果在控制器和视图中都需要代码,则需要在表类而不是助手类中移动代码。

    详细回答:

    您在助手中创建的代码需要移动到相关的表类中,这将获取数据。

    然后,在视图和控制器中,都将使用在表类中创建的新方法。

    例如,在CategoriesTable类中,可以添加一个名为:

    public function fetchCategoryData(){
       //TODO: Custom code that will fetch the category data like...
       //return $this->find();
    }
    
    public function updateCategoyData($args){
       //TODO: Custom code to update your category data
    }
    

    现在,在视图或控制器中,您可以使用

    $Categories = TableRegistry::get('Categories');
    
    $Categories->fetchCategoryData();
    //or
    $Categories->updateCategoryData();