как перенаправить страницу через контроллер в Zend - PullRequest
0 голосов
/ 07 февраля 2012

Когда я нажимаю кнопку подтверждения, я хочу, чтобы страница перенаправлялась на следующую страницу?

header('Location: /pdp/policy-info.phtml');

Я написал приведенный выше код в коде контроллера, но не могу перенаправить на указанную выше страницу.,он остается на той же странице.имя файла называется policy-info.phtml в представлении.

Также, как только я перенаправлю, смогу ли я получить доступ к значениям моей формы через $ _POST?Или есть альтернатива.

Ответы [ 2 ]

7 голосов
/ 07 февраля 2012

хорошо, для меня это звучит так, как будто вы упускаете несколько понятий:

  • Вы никогда не будете перенаправлять в файл phtml. (если вы не написали несколько пользовательских правил переписывания / маршрутизации) Zend использует архитектуру MVC, URL-адреса существуют следующим образом:

    /module/controller/view/key1/value1/keyx/valuex/
    как правило, URL-адреса Zend не заканчиваются расширениями файлов. Также вы никогда не будете напрямую вызывать файл просмотра из вашего браузера.
  • В своем теге формы вы указываете, куда отправляется форма с атрибутом действия. Для вашего URL я предполагаю pdp контроллер и действие policy-info

    action="/pdp/policy-info/"
  • Если вы хотите перенаправить после отправки формы с вашего контроллера, вы должны использовать:
    $this->_redirect('/pdp/policy-info/'); 

    # maybe you want to execute some code and then execute 
    # additional code in another controller without re-bootstrapping
    $this->_forward('policy-info', 'pdp');

http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.utilmethods

  • Если вы перенаправите вас, у вас не будет доступа к вашему POST, если вы не сохранили эти значения в другом месте (как в сеансе). Если вы продолжите, я думаю, что значения будут доступны во втором действии.
0 голосов
/ 07 февраля 2012

на самом деле может быть несколько способов сделать то, что вы хотите сделать.Я еще не пробовал этот первый метод, но он должен работать.

  • Визуализация нового скрипта veiw из вашего контроллера / действия, если isPost ():

    public function myAction(){
    $form = My_Form();
    $this->view->form = $form;
    
    //if form is posted and submit = Submit
    if ($this_request->isPost() && $this_request->getPost()->submit == 'Submit') {
        if ($form->isValid($this->_request->getPost()) {
        //this is where you want to capture form data
        $data = $form->getValues();
        //render a new viewscript or _forward to a new action and perform your processing there.
        $this->render('path to phtml file');
        //if user needs to press a button to accept submit = accept
        ...do some more stuff...
            }
        }    
    }
    

    Я думаю, что это или какой-то вариант будет работать. Примечание: Я не думаю, что _forward сбрасывает объект запроса, поэтому ваши данные $ _POST не должны быть затронуты.

Также, если эта информация о политике не требуетДополнительный ввод от пользователя и только для информации, вы можете легко _forward('action') пустое действие, и маршрутизатор отобразит сценарий просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...