CakePHP использует $ this в функции view - PullRequest
0 голосов
/ 25 мая 2018

В моем проекте CakePHP3.6 я использую TreeHelper для создания своего меню.

На мой взгляд ( pages / index.ctp ) я использую:

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

, который создает основной список ненормированных данных.

С 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 голосов
/ 25 мая 2018

Вместо глобальной функции используйте анонимную функцию.

$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;
    }
]);
...