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');