2012-10-18 3 views
3

새로운 프레임 워크의 Form 폴더를 Zend Framework 1의 Form 폴더와 교환하려고 시도했지만 작동하지 않았습니다.Zend Framework 1에서 Zend Form 2를 사용할 수 있습니까?

또한 ZF1이 라이브러리에 새로운 양식 2.0 폴더를 가리 키려고했지만 그 중 하나를 작동시키지 못했습니다.

누군가 어떻게하는지 알고 있습니까?

+0

나는 그것이 불가능하다고 생각합니다! – RDK

+0

ZF의 모든 구성 요소가 느슨하게 결합되어 있기 때문에 불가능하다고 생각하지 않습니다. 따라서 모든 구성 요소는 별도로 사용할 수 있습니다. 그러나 완전히 다시 작성 되었기 때문에 ZF1 코드를 사용하여 ZF2 양식 구성 요소에 액세스 할 수 없습니다. 또한보십시오 : http://framework.zend.com/manual/2.0/en/ref/overview.html –

답변

4

ZF1과 함께 ZF2 구성 요소를 사용할 수 있으며 대부분의 경우 비교적 간단합니다.

library 및 유형에 당신이 당신의 라이브러리 경로에 zf2를 복제하는 데 필요한 모든 때문에 CD의

첫째 : -

git clone https://github.com/zendframework/zf2.git Zf2 

이 라이브러리 아래 Zf2 폴더를 생성합니다.

이제 zf2 파일을 찾는 방법을 자동 로더에 알려줘야합니다. 부트 스트랩에 다음을 추가하십시오. -

protected function _initZf2() 
{ 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    $autoloader->pushAutoloader(new App_Loader_Autoloader_Zf2(), 'Zend'); 
} 

다음으로 오토로더를 생성합니다. 나는이 라인 application.ini에 포함되어 App_라는 네임 스페이스를 가지고있다 -

autoloadernamespaces[] = "App_" 

을 나는 앱/로더/자동 로더/Zf2.php에서 자동 로더 생성 : - 이제

class App_Loader_Autoloader_Zf2 implements Zend_Loader_Autoloader_Interface 
{ 
    public function autoload($class) 
    { 
     if(strstr($class, '\\')){ 
      $zf2Class = explode('\\', $class); 
      $path = 'Zf2/library/' . implode('/', $zf2Class) . '.php'; 
      include_once $path; 
     } 
    } 
} 

을 zf1은 올바른 네임 스페이스가 제시 될 때 zf2 클래스를 찾을 위치를 알고 있습니다. 우리는 /, Zf2.php을 예를 들어, 응용 프로그램/양식 양식을 만들 수 있습니다 - 이제

use Zend\Form\Form; 
use Zend\Form\Element; 
use Zend\Form\Element\Text; 

class Application_Form_Zf2 extends Form 

{ 
    public function prepareElements() 
    { 
     $this->add(array(
      'name' => 'name', 
      'options' => array(
       'label' => 'Your name', 
      ), 
      'attributes' => array(
       'type' => 'text', 
      ), 
     )); 
    } 
} 

, 컨트롤러, 당신은 인스턴스화 할 수있는 zf2 양식 : -

$this->view->form = new Application_Form_Zf2(); 
$this->view->form->prepareElements(); 

우리가를 사용하는 것처럼 ZF1보기, 우리는 자동으로 ZF2 양식을 렌더링하는 데 사용되는 view helpers에 액세스 할 수없는, 그래서 우리는 우리가 필요로하는 명시 적으로보기에 그것들을 초기화해야한다 : -

$form = $this->form; 
$formHelper = new \Zend\Form\View\Helper\Form(); 
$formText = new \Zend\Form\View\Helper\FormText(); 
$formLabel = new \Zend\Form\View\Helper\FormLabel(); 
echo $formHelper->openTag($form); 
echo $formLabel($form->get('name')); 
echo $formText($form->get('name')); 
echo $formHelper->closeTag($form); 

이 출력됩니다 FOL을 lowing의 HTML : -

<form action="" method="POST"> 
    <label for="name">Your name</label> 
    <input name="name" type="text" value=""> 
</form> 

이 방법은 양식의 출력을 통해 당신에게 컨트롤을 많이 제공하고 내가 이상 떨어진 ZF1보기 도우미에서 PHTML 파일에 넣어 한 코드의 일부를 숨기고 추천 할 것입니다.

+0

나는 'ZF1'에서 'ZF2에서'라고 말하고 싶다고 생각합니다. – markus

+0

감사합니다. – vascowhite

+0

답장을 보내 주셔서 감사합니다 ... 월요일에해볼 게요. :) – Samuele

관련 문제