php - Zend Framework 2-주석 양식이 작동하지 않습니다.

출처 php forms model zend-form zend-framework2

@Hikaru-Shindo 덕분에 AnnotationForms에 대한 해결 방법으로 가장 좋은 ModelForms를 살펴 보았습니다. 그러나 here에 표시된 예는 저에게 적합하지 않습니다.

use Zend\Form\Annotation\AnnotationBuilder;

$builder = new AnnotationBuilder();
$form    = $builder->createForm('User');


이 코드를 보면 AnnotationBuilder가이 사용자 양식을 찾을 수있는 위치가 궁금합니다. 특히 def 형식의 주석에는 소문자 'user'가 있기 때문에

@Annotation\Name("user")


폼 정의 코드를 'MyModule / Form / UserForm.php'에 넣고 하단 코드를 컨트롤러에 넣습니다. 이것이 올바른 방법입니까?
이것은 사용자 엔터티 (단축 버전)에 대한 엔터티 (및 양식 정의) 일 수 있습니다.

namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
use Zend\Form\Annotation as Form;

/**
 * @ORM\Entity
 * @ORM\Table(name="application_user")
 * @Form\Name("user")
 * @Form\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty")
 */
class User
{

    /**
     * @var int
     * @ORM\Id @ORM\Column(name="id", type="integer")
     * @ORM\GeneratedValue
     * @Form\Exclude()
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="user_name", type="string", length=255, nullable=false)
     * @Form\Filter({"name":"StringTrim"})
     * @Form\Validator({"name":"StringLength", "options":{"min":1, "max":25}})
     * @Form\Validator({"name":"Regex", "options":{"pattern":"/^[a-zA-Z][a-zA-Z0-9_-]{0,24}$/"}})
     * @Form\Attributes({"type":"text"})
     * @Form\Options({"label":"Username:"})
     */
    protected $username;

    /**
     * @var string
     * @ORM\Column(name="email", type="string", length=90, unique=true)
     * @Form\Type("Zend\Form\Element\Email")
     * @Form\Options({"label":"Your email address:"})
     */
    protected $email;

}


그리고이 양식을 사용하려면 :

use Zend\Form\Annotation\AnnotationBuilder;

$builder = new AnnotationBuilder();
$form    = $builder->createForm('Application\Entity\User');
// Also possible:
// $form = $builder->createForm(new Application\Entity\User());


따라서 빌더에는 정의 클래스의 완전한 이름이 필요합니다.
주석을 사용하여 설정 한 이름은 예를 들어 양식의 id 속성을 만드는 데 사용되는 양식의 이름입니다.

use 문이 있으면 네임 스페이스를 중단 할 수도 있습니다.

use Zend\Form\Annotation\AnnotationBuilder;
use Application\Entity\User;

$builder = new AnnotationBuilder();
$form    = $builder->createForm('User');
// Also possible:
// $form = $builder->createForm(new User());
관련 기사

php - 인수에서 문자열 연결 (PHP)

php - 작동하지 않는 연관 배열에서 키 제거

php - $ _POST 수퍼 글로벌에서 PHP가 어레이를 생성하지 못하도록 중지

php - Sublime Text 2가있는 Xdebug

php - PHP에서 특정 문자열을 시간으로 변환

php - 컬 페이지 제목

php - PHP를 통해 프로세스에 신호 보내기

php - .csv 파일을 생성 할 수 없습니다 : PHP

php - PHP를 통해 wait_timeout 및 max_allowed_packet을 변경하는 방법이 있습니까? [복제]

php - MYSQL 연도의 중단 날짜 중에서 선택