2012-10-15 4 views
1

ZF2 (v2.0.2) 응용 프로그램에서 ORM RedBeanPHP (v3.3)을 사용하려고하는데 자동 FUSE 모델에 문제가 있습니다. 내 모델 클래스에 연결할 수 없습니다. 자동으로 선택하지 않고 "일반"빈을 대신 사용합니다.Zend Framework 2 애플리케이션의 RedBeanPHP FUSE 모델?

RjhRedbean 모듈을 사용하여 ZF2에서 RedBean을로드합니다.

내 모델 클래스는 다음과 같습니다. .\module\Check\src\Check\Model\Model 폴더에 있습니다.

<?php 
namespace Check\Model; 

use \RedBean_SimpleModel; 

class Model_Check extends RedBean_SimpleModel 
{ 
    public $id; 
    public $type; 
    ... 

    public function open() 
    { 
    } 

    public function toArray() 
    { 
     return array($this->id, $this->type); 
    } 

나는 $c = new Model_Check();이 작동하기 때문에 자동 공급기에서 픽업 한 것을 확인했습니다. DB를에서 모든 Check 모델 객체를로드하려고

내 컨트롤러 코드는 다음과 같습니다

<?php 
namespace Check\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 
use Zend\View\Model\JsonModel; 
use RjhRedbean; 
use Check\Model\Model_Check; 

class CheckController extends AbstractActionController 
{ 
    public function listAction() 
    { 
     $rb = $this->getServiceLocator()->get('RjhRedbean'); 

     $checks = $rb->findAll('Check'); // does not link to my Model object 

     foreach ($checks as $check) { 
     $ar = $check->toArray();   // does not exist in the objects returned 
     ... 

반환 된 객체 내가 findAll() 방법에 빈 이름으로 넣어해야합니까

RedBean_OODBBean이다? 나는 시도했다 :

$checks = $rb->findAll('Model_Check'); 
$checks = $rb->findAll('Check/Model/Check'); 
$checks = $rb->findAll('Check/Model/Model_Check'); 

아무 것도하지 않는 것. 콩을 만들 때도 같은 문제가 발생합니다 ...

고마워요.

+0

나는 이것이 내가 고칠 필요가 있다고 생각한다. 이 일을하도록 기꺼이 도와 주실 경우, [email protected]로 이메일을 보내주십시오. 일단 문제가 해결되면 여기에 의미있는 해결책을 게시 할 수 있습니다. 그동안 자동 퓨즈 모델에 대해 읽어 보겠습니다. 당신을 기다리겠습니다. –

답변

1

이 기능이 작동하지 않는 이유는 FUSE가 네임 스페이스 사용시 발생하는 문제로 인해 일반적으로 수행하는 것처럼 Bean의 모델을 자동으로 찾을 수 없기 때문입니다.

클래스 맵 파일을 사용하고 거기에서 사용중인 모든 모델을 정의하여이 문제를 해결할 수 있습니다. 모델이 전역 이름 공간에 있는지 확인하십시오.

더 많은 정보와 예제 내 블로그에서 확인할 수 있습니다 : 나는 다음과 같이 RjhRedbean 모듈을 수정

+0

감사합니다. 그것은 작동합니다 ... 나는 C# 배경에서 왔기 때문에 글로벌 네임 스페이스는 다소 이단의 것이지만 작동합니다 ... 도와 줘서 고마워. – dstj

+0

@dsjt : 나는 그것을 당신을 위해 분류 해 주어서 기뻐요. 나는이 모듈을 http://modules.zendframework.com에서 받아들이려고 노력하고 있으므로보고 된 문제를 계속 지키고 싶다. Redbean의 저자 인 Gabor는 여기서 상황을 설명 할 수있는 네임 스페이스에 관심이 없지만 이것을 http://redbeanphp.com/extra/php_5_3_namespaces의 네임 스페이스에 넣으려면 도움을 제공합니다. RjhRedbean을 사용해 주셔서 감사합니다. –

0

How to use FUSE models in RjhRedbean :
1.Created ModelFormatter 라는 이름의 클래스이 클래스는 아무 것도하지 않습니다하지만 관련 적절한 네임 스페이스를 반환하여 모델. 네임 스페이스를 구성에 설정할 수 있습니다. RjhRedbeanServiceFactory 클래스 2.In

는 ($ serviceLocator->의 get ('ModelFormatter'))
RedBean_ModelHelper :: setModelFormatter을 추가;

관련 문제