cakephp 在视图文件中调用控制器函数

cakephp call a controller function in view file

我的方法是

public function topmenu($parentsid=null){
            $this->layout =false;
            $category_tree  = $this->Categorymaster->find('all',array('order'=>'Categorymaster.lft ASC','conditions'=>array('Categorymaster.parent_id'=>$parentsid)));
            echo '<ul class="sub-menu" role="menu">';
            foreach($category_tree as $parentval){
                echo '<li>'.$parentval['Categorymaster']['name'].'</li>';
                $id = $parentval['Categorymaster']['id'];
                $haschild = $this->Categorymaster->children($id, true);
                if (!empty($haschild)) {
                    $this->topmenu($id);
                }
            }
            echo '</ul>';
            $this->set(compact('category_tree'));
            $this->render('topmenu');
        }

我从控制器获得输出

我正在尝试在我的 topmenu.ctp 文件中使用 foreach 循环,但作为 cakephp 是 mvc 它在行

处给出错误
$haschild = $this->Categorymaster->children($id, true);
                    if (!empty($haschild)) {
                        $this->topmenu($id);
}

那么它如何在 .ctp 文件中使用 topmenu() 方法,以便我可以在我的菜单或任何其他替代方案中显示它。

首先,在 ctp(视图)文件中直接调用控制器方法绝不是一个好习惯。

如果您仍然想这样做,请尝试这样调用:-

Controller name::(scope resolution operator) function name(parameters). 

注意:-确保你的方法是public。