Я хочу получить от сервера входные элементы с их требованиями к валидации, которые я храню в файле validation.yaml.
о, и, как показывают теги, я делаю это с Symfony 4.
Когда пользователь захочет загрузить новое сообщение, он будет иметь представление по умолчанию, но с элементами ввода - вот чего я хочу достичь.
На стороне сервера: у меня есть 2 идеи, ни одной из которых я не знаючто выполнить с
Получить валидацию и собрать элементы каким-либо образом:
/**
* Controller function
*/
public function getPostFields(): JsonResponse
{
$topicRequirements = getThemFromSomewhere('topic');
$categoryRequirements = getThemFromSomewhere('category');
# How do I get those?
$topicHTMLInput = buildItSomehow('input', $topicRequirements);
$categoryHTMLSelection = buildItSomehow('selection', $categoryRequirements);
# Or build those??
или построить его с помощью построителя форм:
/**
* Builder function
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', EntityType::class, [
'class' => Category::class
])
->add('topic', TextType::class);
}
и сделать это так:
/**
* Controller function
*/
public function getPostFields(): JsonResponse
{
$post = new Post();
$form = $this->createForm(Builder::class, $post);
$HTMLInput = $form->renderHTMLInput();
$topicHTMLInput = $HTMLInput['topic'];
$categoryHTMLSelection = $HTMLInput['category'];
Клиент:
var post = {
topic: someHTMLElement,
category: someOtherHTMLElement,
insert: function(data) {
for (let key in this)
if (this[key] instanceof Element && data.hasOwnProperty(key))
this[key].innerHTML = data[key];
}
}
response = someXMLHttpRequestResponse;
post.insert(response.data);
Я хочу, чтобы response.data
, который я передаю post.insert
, соответствовал требованиям проверки с сервера как: {topic: '<input attr>', category: '<input attr>'}
и т. Д.на стороне сервера я ожидаю
return new JsonResponse(['data' => [
'topic': $topicHTMLInput,
'category': $categoryHTMLSelection
]]);
}
Рад получить некоторую помощь;)