使用 zend 框架显示树 dijit

发布于 2024-08-27 20:43:14 字数 1521 浏览 4 评论 0原文

我正在尝试使用 dijit 和 zend 框架来显示类别和子类别树。一直找不到好的例子。这就是我所得到的:

基本上我得到了以下代码作为我的操作:

class SubcategoriesController extends Zend_Controller_Action{
     .....
public function loadtreeAction()
{

Zend_Dojo::enableView($this->view);
Zend_Layout::getMvcInstance()->disableLayout();

//Creating a sample tree of categories and subcategories
$a["cat1"]["id"] = "id1";
$a["cat1"]["name"] = "Category1";
$a["cat1"]["type"] = "category";

$subcat1 = array("id" => "Subcat1","name" => "Subcategory1" , "type" => "subcategory");
$subcat2 = array("id" => "Subcat12","name" => "Subcategory12" , "type" => "subcategory");
$a["cat1"]["children"] = array($subcat1,$subcat2);

$treeObj = new Zend_Dojo_Data('id', $a);
$treeObj->setLabel('name');
$this->view->tree =  $treeObj->toJson();   
}
    ....
 }

并且在我看来:

<?php
    $this->dojo()->requireModule('dojo.data.ItemFileReadStore');
    $this->dojo()->requireModule('dijit.Tree');
    $this->dojo()->requireModule('dojo.parser');
?>

<div dojoType="dojo.data.ItemFileReadStore"  url="/Subcategories/loadtree" jsId="store"></div>
<div dojoType="dijit.tree.ForestStoreModel" jsId="treeModel" store="store" rootId="root" rootLabel="List of Categories" childrenAttrs="children" query="{type:'category'}"></div>
<div dojoType="dijit.Tree" model="treeModel" labelAttrs="ListOfCategories"></div>

它甚至似乎根本没有尝试加载树。

任何帮助表示赞赏

I am trying to display a tree of categories and subcategories by using dijits with zend framework. Haven't been able to find a good example. This is what I've got:

Basically I got the following code as my action:

class SubcategoriesController extends Zend_Controller_Action{
     .....
public function loadtreeAction()
{

Zend_Dojo::enableView($this->view);
Zend_Layout::getMvcInstance()->disableLayout();

//Creating a sample tree of categories and subcategories
$a["cat1"]["id"] = "id1";
$a["cat1"]["name"] = "Category1";
$a["cat1"]["type"] = "category";

$subcat1 = array("id" => "Subcat1","name" => "Subcategory1" , "type" => "subcategory");
$subcat2 = array("id" => "Subcat12","name" => "Subcategory12" , "type" => "subcategory");
$a["cat1"]["children"] = array($subcat1,$subcat2);

$treeObj = new Zend_Dojo_Data('id', $a);
$treeObj->setLabel('name');
$this->view->tree =  $treeObj->toJson();   
}
    ....
 }

And on my view:

<?php
    $this->dojo()->requireModule('dojo.data.ItemFileReadStore');
    $this->dojo()->requireModule('dijit.Tree');
    $this->dojo()->requireModule('dojo.parser');
?>

<div dojoType="dojo.data.ItemFileReadStore"  url="/Subcategories/loadtree" jsId="store"></div>
<div dojoType="dijit.tree.ForestStoreModel" jsId="treeModel" store="store" rootId="root" rootLabel="List of Categories" childrenAttrs="children" query="{type:'category'}"></div>
<div dojoType="dijit.Tree" model="treeModel" labelAttrs="ListOfCategories"></div>

It doesn't even seem to try to load the tree at all.

Any help is appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尽揽少女心 2024-09-03 20:43:14

首先,您必须创建单独的操作。一个用于显示,另一个用于加载:

public function indexAction()
{
    Zend_Dojo::enableView($this->view);
    $this->view->dojo()->setDjConfigOption('parseOnLoad', true);
}
public function loadtreeAction()
{
    //Creating a sample tree of categories and subcategories
    $a["cat1"]["id"] = "id1";
    $a["cat1"]["name"] = "Category1";
    $a["cat1"]["type"] = "category";

    $subcat1 = array("id" => "Subcat1","name" => "Subcategory1" , "type" => "subcategory");
    $subcat2 = array("id" => "Subcat12","name" => "Subcategory12" , "type" => "subcategory");
    $a["cat1"]["children"] = array($subcat1,$subcat2);

    $treeObj = new Zend_Dojo_Data('id', $a);
    $treeObj->setLabel('ListOfCategories');
    $this->view->tree =  $treeObj->toJson();
}

并且您一定不要忘记

setDjConfigOption('parseOnLoad', true)

在您的views/scripts/index.phtml中(如果您使用布局,必须放置一些部分,我让您这样做):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<?php 
$this->dojo()->enable();
$this->dojo()->requireModule('dojo.data.ItemFileReadStore');
$this->dojo()->requireModule('dijit.Tree');
$this->dojo()->requireModule('dojo.parser');
echo $this->dojo();
echo $this->dojo()->addStylesheetModule('dijit.themes.tundra');
?>
</head>
<body class="tundra">
<div id="content">
<div dojoType="dojo.data.ItemFileReadStore"  url="http://194.79.142.38:1080/rbplm/public/home/index/loadtree" jsId="store"></div>
<div dojoType="dijit.tree.ForestStoreModel" jsId="treeModel" store="store" rootId="root" rootLabel="List of Categories" childrenAttrs="children" query="{type:'category'}"></div>
<div dojoType="dijit.Tree" model="treeModel" labelAttrs="ListOfCategories"></div>   
</div>
</body>
</html>

并且在loadtree.phtmln中:

     <?php echo $this->tree ?>

First you must create separate action. One for display, other to load:

public function indexAction()
{
    Zend_Dojo::enableView($this->view);
    $this->view->dojo()->setDjConfigOption('parseOnLoad', true);
}
public function loadtreeAction()
{
    //Creating a sample tree of categories and subcategories
    $a["cat1"]["id"] = "id1";
    $a["cat1"]["name"] = "Category1";
    $a["cat1"]["type"] = "category";

    $subcat1 = array("id" => "Subcat1","name" => "Subcategory1" , "type" => "subcategory");
    $subcat2 = array("id" => "Subcat12","name" => "Subcategory12" , "type" => "subcategory");
    $a["cat1"]["children"] = array($subcat1,$subcat2);

    $treeObj = new Zend_Dojo_Data('id', $a);
    $treeObj->setLabel('ListOfCategories');
    $this->view->tree =  $treeObj->toJson();
}

And you dont must forget the

setDjConfigOption('parseOnLoad', true)

In your views/scripts/index.phtml (if you use layout, some parts must be placed in, i let you do that) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<?php 
$this->dojo()->enable();
$this->dojo()->requireModule('dojo.data.ItemFileReadStore');
$this->dojo()->requireModule('dijit.Tree');
$this->dojo()->requireModule('dojo.parser');
echo $this->dojo();
echo $this->dojo()->addStylesheetModule('dijit.themes.tundra');
?>
</head>
<body class="tundra">
<div id="content">
<div dojoType="dojo.data.ItemFileReadStore"  url="http://194.79.142.38:1080/rbplm/public/home/index/loadtree" jsId="store"></div>
<div dojoType="dijit.tree.ForestStoreModel" jsId="treeModel" store="store" rootId="root" rootLabel="List of Categories" childrenAttrs="children" query="{type:'category'}"></div>
<div dojoType="dijit.Tree" model="treeModel" labelAttrs="ListOfCategories"></div>   
</div>
</body>
</html>

And in loadtree.phtmln just:

     <?php echo $this->tree ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文