ZF2 如何使用自定义表单元素设置 <input type='radio' CHECKED>
ZF2 How to set <input type='radio' CHECKED> with a custom Form Element
如何在表单输入单选字段中设置 checked?此表单字段是使用自定义表单元素添加的。该字段的值不一致。
我的自定义表单元素 returns 1 个元素。这是一个无线电输入字段。每次提交表格时我都需要检查这个。我使用这个而不是 "hidden" 字段的原因是为了让用户看到这个设置。
这是自定义表单元素
namespace Member\Form\Element;
use Doctrine\ORM\EntityManager;
use Zend\Form\Element\Radio;
/**
* Class OriginalLanguageIsoRadio
*
* @package Member\Form\Element
*/
class OriginalLanguageIsoRadio extends Radio
{
/**
* @var EntityManager $entityManager
*/
protected $entityManager;
/**
* @var string $translationKey
*/
protected $translationKey;
/**
* @var string $textDomain
*/
protected $textDomain;
/**
* @param EntityManager $entityManager
* @param string $translationKey
* @param string $textDomain
*/
public function __construct(
EntityManager $entityManager,
$translationKey,
$textDomain
)
{
$this->entityManager = $entityManager;
$this->translationKey = $translationKey;
$this->textDomain = $textDomain;
}
/**
* Get Value Options
*
* @return array
*
* @throws \Exception
*/
public function getValueOptions()
{
$array = [];
$query = $this->entityManager
->createQueryBuilder()
->from(
'AMDatabase\Entity\TheVerse\TranslationsMasters',
't'
)
->select('t.languageIso')
->setMaxResults(1);
$result = $query->getQuery()
->getArrayResult();
if (is_array($result) && count($result) > '0') {
foreach ($result AS $value) {
if ( $value['languageIso'] == '' ) {
$array['Global'] = $value['Global'];
} else {
$array[$value['languageIso']] = $value['languageIso'];
}
}
}
return $array;
}
}
然后我调用自定义表单元素:
/**
* Original Language Iso
*/
$this->add(
[
'type' => 'Member\Form\Element\OriginalLanguageIsoRadio',
'name' => 'original_language_iso',
'options' => [
'label' => 'original_language_iso'
],
'attributes' => [
'id' => 'original_language_iso',
]
]
);
这会将以下内容添加到我的表单中:
<input type="radio" name="original_language_iso" id="original_language_iso" value="en-US">
我想要的输出是
<input type="radio" name="original_language_iso" id="original_language_iso" value="en-US" **checked**>
您有两个选择:
一)后端:
属性数组必须包含一个 'value' 设置为可用值的唯一元素,这是自动检查无线电输入的方式。对于您的示例,它将是:
$this->add(
[
'type' => 'Member\Form\Element\OriginalLanguageIsoRadio',
'name' => 'original_language_iso',
'options' => [
'label' => 'original_language_iso'
],
'attributes' => [
'id' => 'original_language_iso',
'value'=>'something_here'
]
]
);
b) 正面:
使用 jQuery 检查收音机输入。你可以这样做:
jQuery('#original_language_iso').attr('checked','checked');
如何在表单输入单选字段中设置 checked?此表单字段是使用自定义表单元素添加的。该字段的值不一致。
我的自定义表单元素 returns 1 个元素。这是一个无线电输入字段。每次提交表格时我都需要检查这个。我使用这个而不是 "hidden" 字段的原因是为了让用户看到这个设置。
这是自定义表单元素
namespace Member\Form\Element;
use Doctrine\ORM\EntityManager;
use Zend\Form\Element\Radio;
/**
* Class OriginalLanguageIsoRadio
*
* @package Member\Form\Element
*/
class OriginalLanguageIsoRadio extends Radio
{
/**
* @var EntityManager $entityManager
*/
protected $entityManager;
/**
* @var string $translationKey
*/
protected $translationKey;
/**
* @var string $textDomain
*/
protected $textDomain;
/**
* @param EntityManager $entityManager
* @param string $translationKey
* @param string $textDomain
*/
public function __construct(
EntityManager $entityManager,
$translationKey,
$textDomain
)
{
$this->entityManager = $entityManager;
$this->translationKey = $translationKey;
$this->textDomain = $textDomain;
}
/**
* Get Value Options
*
* @return array
*
* @throws \Exception
*/
public function getValueOptions()
{
$array = [];
$query = $this->entityManager
->createQueryBuilder()
->from(
'AMDatabase\Entity\TheVerse\TranslationsMasters',
't'
)
->select('t.languageIso')
->setMaxResults(1);
$result = $query->getQuery()
->getArrayResult();
if (is_array($result) && count($result) > '0') {
foreach ($result AS $value) {
if ( $value['languageIso'] == '' ) {
$array['Global'] = $value['Global'];
} else {
$array[$value['languageIso']] = $value['languageIso'];
}
}
}
return $array;
}
}
然后我调用自定义表单元素:
/**
* Original Language Iso
*/
$this->add(
[
'type' => 'Member\Form\Element\OriginalLanguageIsoRadio',
'name' => 'original_language_iso',
'options' => [
'label' => 'original_language_iso'
],
'attributes' => [
'id' => 'original_language_iso',
]
]
);
这会将以下内容添加到我的表单中:
<input type="radio" name="original_language_iso" id="original_language_iso" value="en-US">
我想要的输出是
<input type="radio" name="original_language_iso" id="original_language_iso" value="en-US" **checked**>
您有两个选择: 一)后端: 属性数组必须包含一个 'value' 设置为可用值的唯一元素,这是自动检查无线电输入的方式。对于您的示例,它将是:
$this->add(
[
'type' => 'Member\Form\Element\OriginalLanguageIsoRadio',
'name' => 'original_language_iso',
'options' => [
'label' => 'original_language_iso'
],
'attributes' => [
'id' => 'original_language_iso',
'value'=>'something_here'
]
]
);
b) 正面: 使用 jQuery 检查收音机输入。你可以这样做:
jQuery('#original_language_iso').attr('checked','checked');