mustache_templates-8.x-1.0-beta4/modules/mustache_test/src/Controller/MustacheTestFormController.php

modules/mustache_test/src/Controller/MustacheTestFormController.php
<?php

namespace Drupal\mustache_test\Controller;

use Drupal\mustache\Helpers\MustacheRenderTemplate;
use Drupal\mustache\Render\Markup;
use Drupal\mustache_test\TestLinks;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

/**
 * A controller delivering resources for testing form binding.
 */
class MustacheTestFormController {

  /**
   * Returns a Json response that echoes query parameters in uppercase.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   A JSON response.
   */
  public function echoFeed(Request $request) {
    $data = ['echo' => []];
    foreach ($request->query->keys() as $key) {
      $data['echo'][$key] = strtoupper($request->get($key, ''));
    }
    $response = new JsonResponse();
    $response->setPrivate();
    $response->setJson(json_encode($data));
    return $response;
  }

  /**
   * Returns a page with a client form that echoes submitted text input.
   *
   * @return array
   *   A build array for rendering the Mustache template.
   */
  public function pageClientEcho() {
    $render = [];

    $form = <<<HTML
<div>
    <form id="myform" method="GET" action="">
      <input id="myfield" type="text" name="s" value="" />
    </form>
</div>
HTML;

    $placeholder = ['#markup' => ''];
    $build = MustacheRenderTemplate::build('inline_result', '<b>Submitted</b>: {{form.s}}<br /><b>Received</b>: {{echo.s}}');
    $build->withPlaceholder($placeholder);
    $build->usingDataFromUrl('/mustache-test/echo-feed');
    $build->withClientSynchronization()
      ->usingFormValues('#myform')
      ->dataMayBeOfMaxAge(10000)
      ->startsWhenElementWasTriggered('#myfield')
      ->atEvent('input')
      ->always();

    $render[] = $build->toRenderArray();
    $render[] = ['#markup' => Markup::create($form)];
    $render[] = ['#markup' => TestLinks::get()];
    return $render;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc