php - Zend Framework 2 和 Doctrine 问题

标签 php doctrine zend-framework2

我对 Doctrine 非常陌生,我刚刚将 Akrabat 专辑 REST API 示例转换为与 Doctrine 一起使用,它可以很好地显示数据。但是当我编辑、删除或添加相册时,它会抛出一个错误,提示:

Fatal error: Call to undefined method Zend\Http\PhpEnvironment\Request::post()

这是我的 Controller ,

namespace Album\Controller;

use Zend\Mvc\Controller\AbstractActionController,
    Zend\View\Model\ViewModel,
    Album\Form\AlbumForm,
    Doctrine\ORM\EntityManager,
    Album\Entity\Album;

class AlbumController extends AbstractActionController
{
    protected $em;

    public function setEntityManager(EntityManager $em)
    {
        $this->em = $em;
    }

    public function getEntityManager()
    {
        if (null === $this->em) {
            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
        }
        return $this->em;
    }

    public function indexAction()
    {
        return new ViewModel(array(
            'albums' => $this->getEntityManager()->getRepository('Album\Entity\Album')->findAll()
        ));
    }

    public function addAction()
    {
        $form = new AlbumForm();
        $form->get('submit')->setAttribute('label', 'Add');

        $request = $this->getRequest();
        if ($request->isPost()) {
            $album = new Album();

            $form->setInputFilter($album->getInputFilter());
            $form->setData($request->post());
            if ($form->isValid()) {
                $album->populate($form->getData());
                $this->getEntityManager()->persist($album);
                $this->getEntityManager()->flush();

                // Redirect to list of albums
                return $this->redirect()->toRoute('album');
            }
        }

        return array('form' => $form);
    }

    public function editAction()
    {
        $id = (int)$this->getEvent()->getRouteMatch()->getParam('id');
        if (!$id) {
            return $this->redirect()->toRoute('album', array('action'=>'add'));
        }
        $album = $this->getEntityManager()->find('Album\Entity\Album', $id);

        $form = new AlbumForm();
        $form->setBindOnValidate(false);
        $form->bind($album);
        $form->get('submit')->setAttribute('label', 'Edit');

        $request = $this->getRequest();
        if ($request->isPost()) {
            $form->setData($request->post());
            if ($form->isValid()) {
                $form->bindValues();
                $this->getEntityManager()->flush();

                // Redirect to list of albums
                return $this->redirect()->toRoute('album');
            }
        }

        return array(
            'id' => $id,
            'form' => $form,
        );
    }

    public function deleteAction()
    {
        $id = (int)$this->getEvent()->getRouteMatch()->getParam('id');
        if (!$id) {
            return $this->redirect()->toRoute('album');
        }

        $request = $this->getRequest();
        if ($request->isPost()) {
            $del = $request->post()->get('del', 'No');
            if ($del == 'Yes') {
                $id = (int)$request->post()->get('id');
                $album = $this->getEntityManager()->find('Album\Entity\Album', $id);
                if ($album) {
                    $this->getEntityManager()->remove($album);
                    $this->getEntityManager()->flush();
                }
            }

            // Redirect to list of albums
            return $this->redirect()->toRoute('default', array(
                'controller' => 'album',
                'action'     => 'index',
            ));
        }

        return array(
            'id' => $id,
            'album' => $this->getEntityManager()->find('Album\Entity\Album', $id)->getArrayCopy()
        );
    }
}

我在这里做错了什么,我无法坚持我所做的任何更改。

最佳答案

因为没有post方法。尝试 getPost();看到这里Zend\Http\Request

关于php - Zend Framework 2 和 Doctrine 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082046/

相关文章:

php - Codeigniter 查询绑定(bind)

php - Zend Framework 2 真实世界的应用程序文件结构

php - Zend Framework 和 Doctrine 2 - 我的单元测试是否足够?

php - 命名空间行出现语法错误意外的 T_STRING

php - 什么是 https 和 SSL?它们是如何工作的?如何在 PHP 中使用它们?

php - Symfony 2 Doctrine MS SQL 错误

PHP 数据库写入性能 PDO VS ORM

php - Doctrine :迁移:差异未检测非标准目录中实体的映射信息

zend-framework2 - Zend Framework 2 - 应用程序/模块/服务管理器 - Oh My

php - 替换字符串的最后七个字符