我正在尝试使用doctrine在zend2框架中创建一个saveAction。
在我的PromotionsController中我有这个动作:
public function saveLinkAction() {
$view = new ViewModel();
$salonId = (int) $this->params()->fromPost('salon_id', null);
$addLink = $this->getServiceLocator()->get('Promotions\Model\Link');
$linkData['salon_id'] = $salonId;
$linkData['link'] = '/link/example';
$addLink->setData($linkData);
return $view;
}
这只是为了学习如何在数据库中写入数据。
$addLink = $this->getServiceLocator()->get('Promotions\Model\Link');
这行代码显示错误,我不知道是什么原因?
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Promotions\Model\Link
我在Model目录中创建了一个Link.php。
<?php
namespace Link\Model;
use Application\Model\Entity;
use Zend\Form\Annotation;
/**
* @Entity
* @Table(name="promo_link")
*/
class Link extends Entity {
/********** PROPERTIES **********/
/**
* @Id @GeneratedValue(strategy="AUTO") @Column(name="id", type="integer")
* @var int
*
* @Annotation\Exclude()
*/
protected $id;
/**
* @Column(name="salon", type="integer")
* @var int
*
* @Annotation\Options({"label":"Salon"})
* @Annotation\Validator({"name": "Digits"})
*/
protected $salon;
/**
* @Column(name="link", type="string")
* @var string
*/
protected $link;
/**
* @Column(name="start_date", type="string")
* @var string
*/
protected $start_date;
/**
* @Column(name="end_date", type="string")
* @var string
*/
protected $end_date;
}
?>
答案 0 :(得分:0)
错误告诉您问题所在:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Promotions\Model\Link
含义:ServiceManager不知道Promotions\Model\Link
应该是什么。此密钥要么在SMConfig中不存在,要么在创建要返回的实例时发生一些错误。
TL / DR - 检查有关密钥Promotions\Model\Link
答案 1 :(得分:0)
为了将数据保存在数据库中,您将需要entitymanager。
$link = new Link();
$link->setSalonId($salonId);
$link->setLink('/link/example');
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$em->persist($link);
$em->flush();
您可以从上面的代码开始。
但是,最好是创建存储库和服务层。该服务应该可以访问entityManager并保留您的逻辑。您的控制器应该可以访问此服务。