zend - сделать глобальную переменную из перенаправленного URL - PullRequest
1 голос
/ 15 апреля 2011

Я все еще экспериментирую с URL-маршрутами и только что смог заставить его работать.

у моего route.ini есть это:

[производство]
rout.register.route =: lang / register
rout.register.defaults.controller = регистрация
rout.register.defaults.action = index
rout.register.defaults.lang = ru
rout.register.reqs.lang = "[a-z] {2}"

Мой URL будет выглядеть так: http://www.mysite.com/en/register Итак, теперь в моем контроллере я могу сделать это:

$lang = $request->getParam('lang');

Моя проблема: я пытаюсь получить список стран в элементе select, который в зависимости от того, будет ли элемент lang английский или французский, вернет страны на указанном языке.

Для этого мне нужно было бы передать "lang" в форму. Затем в форме передайте его модели, запрашивающей страны там. И если есть изменения, это также способствует изменению многих мест.

Итак, вернемся к вопросу:

Могу ли я просто установить эту переменную как глобальную?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Я бы передал переменную в форму с вашего контроллера.

// 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;
    }
}
0 голосов
/ 15 апреля 2011

Инъекция через установщик форм (как предложено ArneRie) является лучшим решением. Но если у вас нет класса дискретной формы или вы генерируете форму из ini-файла, вы можете получить доступ к параметру, подобному этому, в любом месте после $front->dispatch() в вашем загрузчике

Zend_Controller_Front::getInstance()->getRequest()->getParam('lang');
...