如何在窗体帖子的视图中设置控制器变量


how to set a controller variable in a view from a form post

我在PHP中有一个Zend视图,带有一个表单:

<form action="https://example.com/checkout/" name="info" method="post"> 
    <div id="payment">
        <div id="paypal>
            <?php $this->is_paypal_payment = true; ?>
        </div>
        <div id="credit_card>
            <?php $this->is_paypal_payment = false; ?>
        </div>
    </div>
</form>

当用户单击提交按钮时,如何在控制器中设置实例变量?

这是我尝试过的,但没有奏效。

控制器:

$this->view->payment_option_paypal = false;  // initialized value
$payment_method_option = $this->_getParam('payment_option_paypal', null);
if (!is_null($payment_method_option)) {
   if ($payment_method_option == 'paypal') {
       $this->_is_paypal = true;
   }
}

视图:

<div id="paypal" style="display: none;">
    <?php $this->payment_option_paypal = "paypal"; ?>
    <img src="paypal.gif" style="margin-right:20px;">
</div>

单击提交后,the _getParam()函数不会捕获视图在控制器中为实例变量设置的字符串"PayPal $this->payment_option_paypal

任何想法出了什么问题以及如何解决这个问题?

在你的phtml页面中,你必须像这样使用

<div id="paypal" style="display: none;">
    <input type="hidden" name="paypalname" value="<?php echo $this->payment_option_paypal = "paypal"; ?>" id="paypalname"/>
    <img src="paypal.gif" style="margin-right:20px;">
</div>

控制器

function yourAction()
{
      if ($this->_request->isPost()) 
      {
         $paypalvalue=$this->_getParam('paypalname');
      }
}

我希望它对您有所帮助,如果您对我的回答有任何问题,请告诉我。

div

不会提交数据,任何需要呈现为 html 的内容都必须被回显:

<form action="https://example.com/checkout/" name="info" method="post"> 
    <div id="payment">
        <div id="paypal>
            <?php echo $this->is_paypal_payment = true; ?><!-- maybe should be an input element of kind and echo the $this-> statement -->
        </div>
        <div id="credit_card>
            <?php echo $this->is_paypal_payment = false; ?><!-- maybe should be an input element of kind and echo the $this-> statement -->
        </div>
    </div>
</form>

再次回声:

<div id="paypal" style="display: none;">
    <?php echo $this->payment_option_paypal = "paypal"; ?>
    <img src="paypal.gif" style="margin-right:20px;">
</div>