0

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;


}
?>
4

2 に答える 2

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 にアクセスでき、ロジックを保持する必要があります。コントローラーはこのサービスにアクセスできる必要があります。

于 2013-10-30T12:23:55.047 に答える
0

エラーは、問題の場所を示しています。

Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Promotions\Model\Link

意味: ServiceManager は、Promotions\Model\Link本来あるべきことを認識していません。このキーが SMConfig に存在しないか、返されるインスタンスの作成中にエラーが発生します。

TL/DR - キーに関する ServiceManager 構成を確認してくださいPromotions\Model\Link

于 2013-10-28T10:27:51.363 に答える