0

/app/Lib に保存するカスタム クラスがあり、htmlhelper を使用したいのですが、クラスが何も拡張していないため、次のように $this への参照が$this->Html->linkエラーを与えます: Call to a member function link() on非オブジェクト

自分のクラス内からこのヘルパーを使用するにはどうすればよいですか?

つまり:

<?php
class Tree {

  private $level = 0;

  public function show_tree($tree_array) {
    $this->level++;
    $style = ($this->level==1) ? ' class="sortable"':'';
    echo "<ol".$style.">\n";
    foreach ($tree_array as $t) {
        echo "<li id=\"list_".$t['Category']['id']."\">\n";         
        echo "<div>".$t['Category']['name'];?>
        echo $this->Html->link(__('View'), array('action' => 'view', $t['Category']['id']));
        echo $this->Html->link(__('Edit'), array('action' => 'edit', $t['Category']['id']));
        echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $t['Category']['id']), null, __('Are you sure you want to delete # %s?', $t['Category']['id']));
        echo "</span>\n";
        echo "</div>\n";
        if (!empty($t['children'])) $this->show_tree($t['children']);
        echo "</li>\n";
    }
    echo "</ol>\n";
    $this->level--;
   }


 }
4

1 に答える 1

1

コードを見ると、ライブラリではなくヘルパーが必要であることは明らかです。

html ヘルパーを拡張するか、NestedListHelper などの名前のカスタム ヘルパー内で使用します。これは MVC コンテキストでは正しい方法であり、記述するコードも最も少なくなります。

この TreeHelper を見てください。ツリー構造に基づいてネストされたリストも生成されます。これは、あなたがやろうとしていることと似ているかもしれません: https://github.com/CakeDC/utils/blob/master/View/Helper/TreeHelper .php

于 2012-11-14T11:10:43.030 に答える