问题:使用 Zend 中的单个表单将数据插入两个表中。
答案:
在 Zend 框架中,您可以使用单个表单将数据插入两个不同的表中。首先,需要确保您的表单具有两个不同的控制器(例如 firstController
和 secondController
)。然后,在相应的控制器中创建两个不同的视图(例如 firstView
和 secondView
),这些视图将负责处理各自的数据。
接下来,您需要创建一个用于将数据从第一个表单提交到第二个表单的中介视图。这可以通过在 application.config.php
文件中添加一个名为 intermediate_view
的路由实现。
return [
// ...
'router' => [
'routes' => [
'intermediate_view' => [
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => [
'route' => '/intermediate_view',
'defaults' => [
'controller' => 'Zend\Mvc\Controller\AbstractActionController',
'action' => 'intermediate_view',
],
],
],
],
],
// ...
];
然后,在中介视图中,您可以使用 $request
变量来获取来自第一个表单的提交数据,并将其作为参数传递给第二个表单的 add
方法。
在第二个表单的 add
方法中,您可以使用 $request
变量来获取来自中介视图的数据,并将其存储到数据库中。
// firstController
public function intermediateViewAction()
{
$firstForm = new FirstForm();
$secondForm = new SecondForm();
if ($this->getRequest()->isPost()) {
$firstData = $this->getRequest()->getPost('first_form');
$secondData = $this->getRequest()->getPost('second_form');
$secondForm->add($secondData);
}
return $this->render('first/intermediate_view.phtml', [
'firstForm' => $firstForm,
'secondForm' => $secondForm,
]);
}
在上面的示例中,我们首先创建了两个表单,然后通过中介视图将第一个表单的数据提交到第二个表单。在第二个表单的 add
方法中,我们使用 $request
变量来获取来自中介视图的数据,并将其存储到数据库中。
最后,在 application.config.php
文件中添加以下路由,以便可以通过 URL 直接访问中介视图。
'router' => [
'routes' => [
'first' => [
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => [
'route' => '/first',
'defaults' => [
'controller' => 'First\Controller\First',
'action' => 'index',
],
],
],
'second' => [
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => [
'route' => '/second',
'defaults' => [
'controller' => 'Second\Controller\Second',
'action' => 'index',
],
],
],
],
],
现在,您可以通过 URL /first/intermediate_view
访问中介视图,将数据从第一个表单提交到第二个表单。
领取专属 10元无门槛券
手把手带您无忧上云