2011-03-29 116 views
1

嘿在Zend Framework中,我有一个名为Days 的控制器,我有一个名为sunday的操作。Zend Framework子目录

因此,当我去我的网站:mywebsite.com/days/sunday/ - 这将使用我的默认index.phtml这很好。

现在我有另一个叫做goodmorning的phtml页面,我希望它保留在周日的行动中。

,所以它读取这样的:
mywebsite.com/days/sunday/goodmorning/
mywebsite.com/days/sunday/goodafternoon/
mywebsite.com/days/sunday/night/

我怎么做?

class daysController extends Zend_Controller_Action 

    { 

     public function sundayAction() 

     { 



     } 

    } 
+0

aby idea charles? – jayjay 2011-03-29 20:50:05

回答

2
class DaysController extends Zend_Controller_Action 
{ 
    public function sundayAction() 
    { 
     $params = getParams(); 
     switch ($params[0]) { 
      case 'goodmorning': 
       $partial = 'goodmorning'; 
       break; 
      case 'goodafternoon': 
       $partial = 'goodafternoon'; 
       break; 
      case 'night': 
      default: 
       $partial = 'night'; 
       break; 
     } 
     $this->_helper->viewRenderer($partial); 
    } 
} 

虽然,你应该使用http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.usage建立一个自定义路由。例如,days/:day/:greeting

+0

$ this-> render($ partial。'。phtml');是错误的,因为它会直接在控制器中产生输出,所以如果需要的话,将无法在Helpers或Plugins中的postDispatch动作中取消它。更多的足够的同样是使用以下内容: $ this - > _ helper-> viewRenderer-> setRender($ partial); – Ololo 2011-03-29 22:11:05

+0

感谢Ololo,我更正了你的更正答案。 – 2011-03-30 04:00:24

0

所以,当我去我的网站:mywebsite.com/days/sunday/ - 这将是使用我的默认index.phtml这很好。

错误,它会调用sunday.phtml意见映射与行动

但是,根据所涉及的参数,你既可以使用Zend_Controller_Action::render()方法或在您的视图中使用$this->partial('goodmorning.phtml'),它可能有意义的是,你在所有观点之间都有一些共同点,并且只想改变其余部分。

您可能想要更准确地描述您想要做什么,并且我们可能会建议您实际采用更好的方法。