如何将PHP动态变量传递给XML文件

时间:2010-09-01 00:34:45

标签: zend-framework zend-navigation

Iam尝试使用navigation.xml(Zend Framework)生成菜单和For iam

Contents of navigation.xml(file) 
<?xml version="1.0" encoding="UTF-8"?>
<config>
<nav>
<page1>
<pages>
<label>test</label>
    <uri>abc.php</uri> </pages><page1></nav></config>

并在控制器iam中读取config.xml文件,如下所示

 $config = new Zend_Config_Xml('/configuration/navigation.xml', 'nav');
 $container = new Zend_Navigation($config);
 $view->getHelper('navigation')->setContainer($container);

在Above XML文件中如何将动态值传递给“abc.php?param1 =”。$ paramvalue 如果不可能从XML文件如何通过从navigation.xml获取Url来从Controller传递该页面abc.php只有在正确的参数是 如果不通过它将被重定向到default.php

在View iam中只是说echo $ this-&gt; navigation() - &gt; menu() - &gt; render();它显示页面,每个页面都需要附加一个参数,以便传输到适当的位置。所以我的问题是如何将动态参数附加到来自navigation.xml的每个链接

我正在做的是将页面作为标签 如果页面的值为“myPage”,那么我将设置新的URI 与预期的页面

    $it = new RecursiveIteratorIterator(
    $container, RecursiveIteratorIterator::SELF_FIRST);

  foreach ($it as $page) {
    $label = $page->label;
    if($label = "MyPage"){
        $newuri = "mypage.php?stcode=".$stcode."&cde=".$cde;            
        $page->setUri($newuri);
    }           

}

 Now my problem and all the menu items in the menu are getting the same URI .
 i dont know what  wrong iam doing 

1 个答案:

答案 0 :(得分:1)

我不确定你想要实现什么,但你可以为MVC页面设置params:

<page1>
<pages>
<label>test</label>
<params>
<param1>param1value</param1>
<myparam2>myparam2value</myparam2>
</params>

或:

<page1>
<pages>
<label>test</label>
<uri>abc.php?param1=val</uri>

然后你可以通过以下方式找到它:

$page = $container->findOneByLabel('test');
$page->setUri($yourNewUri);

您可以使用RecursiveIterator迭代所有页面容器,找到您需要的容器并更新它(例如,在控制器插件中)。