현재 zend-expressive로 작업 중입니다. 이제는 zend-form을 사용하여 양식을 생성하고 싶습니다. 모든 것이 제대로 설치되었습니다.zend-form 컬렉션에서 올바른 이름을 생성하지 않습니다.
{{ form().openTag(form)|raw }}
{{ formElement(form.get('id')) }}
{% set element = form.get('name') %}
<div>
{{ formLabel(element) }}
<div>
{{ formElement(element) }}
</div>
</div>
{% set collection = form.get('features') %}
{{ formLabel(collection) }}
{% for element in collection %}
<div>
{{ formSelect(element) }}
</div>
{% endfor %}
{{ form().closeTag(form)|raw }}
이 멋지게 폼을 표시 : 나는 다음 코드를 내 템플릿 (나뭇 가지)에서
<?php
use Zend\Filter;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\ServiceManager\Exception;
use Zend\Validator;
class CategoryForm extends Form
{
public function __construct($features = [])
{
parent::__construct('category');
$this->add([
'name' => 'id',
'type' => Element\Hidden::class,
]);
$this->add([
'name' => 'name',
'type' => Element\Text::class,
'options' => [
'label' => 'Name',
],
]);
$this->add([
'name' => 'features',
'type' => Element\Collection::class,
'options' => [
'label' => 'Features',
'target_element' => new Element\Select('feature', $features),
],
]);
}
}
: 지금 다음과 같은 설정이있다. 이제 내 문제. 나는 카테고리를 편집하려고하면,이 같은 양식을 채울 :
$formData = [
'id' => $category->getId(),
'name' => $category->getName(),
'features' => [
2,
3,
],
];
$this->categoryForm->setData($formData);
하지만 지금은 양식을 생성 냈다 다음 : 당신이 볼 수 있듯이
이<form action="" method="POST" name="category">
<input name="id" value="2" type="hidden">
<div>
<label>Name</label>
<div>
<input name="name" value="Foo" type="text">
</div>
</div>
<label>Features</label>
<div>
<select name="features[0]">
<option value="1">A</option>
<option value="2" selected>B</option>
<option value="3">C</option>
</select>
</div>
<div>
<select name="1"> <!-- The name is wrong here -->
<option value="1">A</option>
<option value="2">B</option>
<option value="3" selected>C</option>
</select>
</div>
</form>
, 두 번째 선택 요소가 잘못이있다 이름. 그 밖의 모든 것은 위대한 일이지만 이름의 생성. 내가 뭔가를 놓친다면 나는 모른다. 나는 정말로 다른 웹 사이트에서 도움을 얻으려고했지만 아무것도 문제를 해결하지 못했습니다. 어쩌면 내 실수를보고이 양식으로 끝내도록 도울 수 있습니다.
미리 감사드립니다.