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

Cakephp 3.6. How to call a helpers query from a controller?

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

现在我想根据执行的搜索使用更新的类别列表来更新类别 select。

这意味着,我需要使用给定的 $variable 在 helper 中调用查询以 运行 新查询和 return 新数据。

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

那么正确的方法是 - 有一个助手调用可以在所有视图中即时使用 selecting 数据库数据? - 解决对控制器的 ajax 调用并使用来自助手的查询?

任何建议将不胜感激! 谢谢!

简答:

如果您在控制器和视图中都需要代码,则需要将代码移动到 Table class 而不是助手 class 中。

长答案:

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

然后在您的视图和控制器中,您将使用您在 Table class.

中创建的新方法

例如,在您的类别中Table class 您可以添加一个名为的方法:

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();