Neos\FluidAdaptor\ViewHelpers\Form\SelectViewHelper::render PHP Method

render() public method

Render the tag.
public render ( ) : string
return string rendered tag.
    public function render()
    {
        $name = $this->getName();
        if ($this->hasArgument('multiple')) {
            $name .= '[]';
        }
        $this->tag->addAttribute('name', $name);
        $options = $this->getOptions();
        $this->tag->setContent($this->renderOptionTags($options));
        $this->addAdditionalIdentityPropertiesIfNeeded();
        $this->setErrorClassAttribute();
        // register field name for token generation.
        // in case it is a multi-select, we need to register the field name
        // as often as there are elements in the box
        if ($this->hasArgument('multiple') && $this->arguments['multiple'] !== '') {
            $this->renderHiddenFieldForEmptyValue();
            for ($i = 0; $i < count($options); $i++) {
                $this->registerFieldNameForFormTokenGeneration($name);
            }
        } else {
            $this->registerFieldNameForFormTokenGeneration($name);
        }
        return $this->tag->render();
    }

Usage Example

 /**
  * @test
  */
 public function prependedOptionLabelIsTranslatedIfTranslateArgumentIsSet()
 {
     $this->tagBuilder->expects($this->once())->method('addAttribute')->with('name', 'myName');
     $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
     $this->tagBuilder->expects($this->once())->method('setContent')->with('<option value="">translated label</option>' . chr(10));
     $this->tagBuilder->expects($this->once())->method('render');
     $this->arguments['options'] = array();
     $this->arguments['name'] = 'myName';
     $this->arguments['prependOptionLabel'] = 'select';
     $this->arguments['translate'] = array('by' => 'id', 'using' => 'label');
     $mockTranslator = $this->createMock(\Neos\Flow\I18n\Translator::class);
     $mockTranslator->expects($this->at(0))->method('translateById')->with('select', array(), null, null, 'Main', '')->will($this->returnValue('translated label'));
     $this->viewHelper->_set('translator', $mockTranslator);
     $this->injectDependenciesIntoViewHelper($this->viewHelper);
     $this->viewHelper->initialize();
     $this->viewHelper->render();
 }