0

我对 Zend Framework 还很陌生,对一些概念感到困惑。

我已经构建了一个 POST 表单,并在表单末尾的 URL 上附加了一个唯一的Id 。我现在想在提交表单时收集该 ID,但我不清楚该怎么做

我会告诉你我想要的:

下面是将表单从我的控制器页面呈现到视图的函数。你会注意到我已经为表单输入了一个带有 ID 的返回操作地址

 $action = "{$this->view->baseUrl()}/sample-manager/process-price/{$sampleId}";
 $this->view->Form = $model=  $this->_model->createForm($action);

接收帖子的功能如下。但是,我想收集应该与 post 返回值一起返回的 Id,但我不知道在哪里可以找到它或如何附加它。

public function processPriceAction()   
 {
   $this->requirePost();  

  if($this->_model->processTieredPriceForm($this->view->form, $this->getRequest()->getPost()))
  {
   $this->_helper->FlashMessenger('Changes saved');

   return $this->_redirect("/product-ecommerce/{$this->_model->getProduct()->id}");
  }
  else
  {
   return $this->render('index');
  }
 }

综上所述,当一个帖子被退回时,Zend Framework 中的帖子会附带返回地址吗?

4

2 回答 2

0

答案在一定程度上取决于您的路由设置方式。如果您使用默认设置,则在操作名称之后,默认路由允许附加数据的键/值对。因此,您可能会更幸运地使用这样的 URL:

{$this->view->baseUrl()}/sample-manager/process-price/id/{$sampleId}

这会将您的 sampleId 放在一个名为“id”的命名参数中,您可以在控制器操作中使用$this->_getParam('id').

于 2013-08-20T21:16:24.727 回答
0

您不能将 id 提供给表单的构造并将其分配给隐藏元素吗?例如,在您的控制器中:

$action = "{$this->view->baseUrl()}/sample-manager/process-price";
$this->view->Form = $model=  $this->_model->createForm($action, $sampleId);

在您的表单模型中(此处未提供因此最好的猜测):

$sampleId = new Zend_Form_Element_Hidden('sampleId');
$sampleId->setValue($sampleId);
$form->addElement($sampleId);

然后,一旦表单发布,您应该能够以标准方式在控制器中获取示例 ID:

$sampleId = $this->getParam('sampleId');
于 2013-08-21T07:49:28.147 回答