我还在尝试使用网址路由,并设法让它发挥作用。
我的routes.ini有这个:
[制作]
routes.register.route =:lang / register
routes.register.defaults.controller = register
routes.register.defaults.action = index
routes.register.defaults.lang = en
routes.register.reqs.lang =“[a-z] {2}”
我的网址如下所示: http://www.mysite.com/en/register 所以现在,在我的控制器中,我可以这样做:
$lang = $request->getParam('lang');
我的问题是:我正在尝试获取select元素中的国家/地区列表,这取决于lang元素是英语还是法语,将返回所述语言的国家/地区。
为此,我需要将“lang”传递给表单。 然后在表单中,将其传递给查询那里国家的模型。 如果有变化,那么很多地方也会发生变化。
回到这个问题:
我可以将此变量设置为全局吗?
答案 0 :(得分:2)
我会将变量传递给控制器中的表单。
// Controller action
public function formAction()
{
$lang = $this->getParam('lang');
$form = new My_Form_Xyz($lang);
$this->view->form = $form;
}
// My_Form_Xyz
protected $lang;
public function __construct($lang)
{
$this->lang = $lang;
parent::__construct();
}
public function init()
{
switch ($this->lang) {
case 'en':
$selectOptions = array();
break;
case 'klingon':
$selectOptions = array();
break;
}
}
答案 1 :(得分:0)
通过表单设置器注入(由ArneRie建议)是更好的解决方案。但是如果您没有离散表单类,或者从ini文件生成表单,则可以在引导程序中$front->dispatch()
之后的任何地方访问这样的参数
Zend_Controller_Front::getInstance()->getRequest()->getParam('lang');