簡體   English   中英

PHP / Zend Framework 2 / CRUD-如何為幾個動作,幾個視圖構造控制器?

[英]PHP / Zend Framework 2 / CRUD - How to structure controller for several actions, several views?

前言

我正在開發一個Web應用程序,我已經從我之前編寫的現有ASP.NET Web表單應用程序中改編了該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類。 使用此控制器,您可以輕松地將創建,讀取更新和刪除操作映射到它們各自的POSTGETPUT / PATCHDELETE http方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM