/**
  * Renders the whole field.
  * This method will generate the label, error tag, input tag and hint tag (if any), and
  * assemble them into HTML according to [[template]].
  *
  * @param string|callable $content the content within the field container.
  *                                 If null (not set), the default methods will be called to generate the label, error tag and input tag,
  *                                 and use them as the content.
  *                                 If a callable, it will be called to generate the content. The signature of the callable should be:
  *
  * ~~~
  * function ($field) {
  *     return $html;
  * }
  * ~~~
  *
  * @return string the rendering result
  */
 public function render($content = null)
 {
     if ($content === null) {
         if (!isset($this->parts['{input}'])) {
             $this->parts['{input}'] = Html::activeTextInput($this->model, $this->attribute, $this->inputOptions);
         }
         if (!$this->isHidden) {
             if (!isset($this->parts['{label}'])) {
                 $this->parts['{label}'] = Html::activeLabel($this->model, $this->attribute, $this->labelOptions);
             }
             if (!isset($this->parts['{error}'])) {
                 $this->parts['{error}'] = Html::error($this->model, $this->attribute, $this->errorOptions);
             }
             if (!isset($this->parts['{hint}'])) {
                 $this->parts['{hint}'] = Html::activeHint($this->model, $this->attribute, $this->hintOptions);
             }
         } else {
             unset($this->parts['{hint}']);
             unset($this->parts['{error}']);
             unset($this->parts['{label}']);
             $this->template = str_replace(['\\n', '{hint}', '{error}', '{label}'], '', $this->template);
         }
         $content = strtr($this->template, $this->parts);
     } elseif (!is_string($content)) {
         $content = call_user_func($content, $this);
     }
     if ($this->isHidden) {
         return "\n" . $content . "\n";
     }
     return $this->begin() . "\n" . $content . "\n" . $this->end();
 }