前言
我正在开发一个 Web 应用程序,我一直在从我以前编写的现有 ASP.NET Web 表单应用程序进行调整。 我对该应用程序的大部分逻辑都在后端代码后面。
在创建应用程序并希望使用MVC将应用程序更改为另一种技术之后,我决定使用PHP/Zend Framework 2,以便我能够发展对MVC和PHP的理解,从而使代码更加结构化。
到目前为止我做了什么...
我有已经可以创建新记录的详细信息表单(即创建 CRUD 的一部分)。
到目前为止,我的视图文件夹看起来像这样
view
|
--action-item
|
--details
| |
| --index.phtml <--single view template to handle CRUD
|
--summary
|
--index.phtml <--separate view not related to details
所需路线模板
localhost/actionitem/create <-- C (Create New Record)
localhost/actionitem/view/1 <-- R (Read first element)
localhost/actionitem/update/1 <-- U (Update first element)
localhost/actionitem/delete/1 <-- D (Delete first element)
控制器操作方法
/* @var $actionItemTable ActionItemTable */
public function summaryAction()
{
return new ViewModel(array(
'actionitems' => $this->getActionItemTable()->fetchAll(),
));
}
public function detailsAction()
{
$dbAdapter = $this->getServiceLocator()->get('Zend'Db'Adapter'Adapter');
$form = new 'Application'Form'ActionItemForm($dbAdapter);
return ['form' => $form];
}
public function createAction()
{
$dbAdapter = $this->getServiceLocator()->get('Zend'Db'Adapter'Adapter');
$form = new 'Application'Form'ActionItemForm($dbAdapter);
$request = $this->getRequest();
if($request->isPost())
{
$request = $this->getRequest();
$actionitem = new ActionItem();
if($request->isPost())
{
$form->setData($request->getPost());
if ($form->isValid())
{
$actionitem->exchangeArray($form->getData());
$this->getActionItemTable()->saveActionItem($actionitem);
}
}
}
return ['form' => $form];
}
问题
构建操作以处理 CRUD 操作的适当方法是什么,将控制器划分为单独的控制器是否是一个好主意?
任何帮助或建议将不胜感激...
也许你应该考虑采用 RESTful 方法。
ZF2 为此有一个AbstractRestfulController
类。使用此控制器,您可以轻松地将创建,读取更新和删除操作映射到它们各自的POST
,GET
,PUT
/PATCH
和DELETE
http方法。