0

如何在表单输入单选字段中设置选中?此表单字段是使用自定义表单元素添加的。该字段的值不一致。

我的自定义表单元素返回 1 个元素。它是一个无线电输入字段。每次提交表单时,我都需要检查这个。我使用它而不是“隐藏”字段的原因是让用户看到这个设置。

这是自定义表单元素

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**>
4

1 回答 1

1

您有两个选择: a) 后端:属性数组必须包含一个设置为可用值的唯一元素的“值”,这是自动检查无线电输入的方法。以您的示例为例,它将是:

$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) Front:使用 jQuery 来检查单选输入。你可以这样做:

jQuery('#original_language_iso').attr('checked','checked');
于 2015-04-28T13:50:55.323 回答