CakePHP在视图函数中使用$ this

时间:2018-05-25 07:55:15

标签: php cakephp cakephp-3.x

在我的CakePHP3.6项目中,我使用TreeHelper创建菜单。

在我看来( pages / index.ctp )我使用:

<?=$this->Tree->generate($pages,['alias'=>'title']); ?>

这会创建一个基本的unordend列表。

使用TreeHelper,我可以使用回调函数来更改列表项中的值:

<?
$this->Tree->generate($pages,['alias'=>'title','callback'=>'myFunction']);
function myFunction($obj) {
    $id = $obj['data']['id'];

    $return = $this->Html->link('Edit',['action' => 'edit', $id]);
    $return .= $obj['data']['title'];

    return $return;
}
?>

我想使用HtmlHelper(即$this->Html->link)来创建链接,但它给了我这个错误:

  

不在对象上下文中时使用$ this

是否有解决方案/解决方法,以便我可以在函数中使用HtmlHelper?

1 个答案:

答案 0 :(得分:3)

使用匿名函数代替全局函数。

$this->Tree->generate($pages, [
    'alias' => 'title',
    'callback' => function ($obj) {
        $id = $obj['data']['id'];

        $return = $this->Html->link('Edit',['action' => 'edit', $id]);
        $return .= $obj['data']['title'];

        return $return;
    }
]);