Как передать объект из контроллера Symfony в angularjs, чтобы определить с ним переменную? - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно предварительно заполнить TextType некоторыми данными изначально, но Angularjs продолжает сбрасывать мой TextType на пустой, даже когда я устанавливаю для него атрибут value ... Итак, как я могу изначально определить его с этим значением при загрузке страницы? Мне нужно, чтобы эта модель ключевого слова была установлена ​​с электронной почтой пользователя, добавление значения в качестве атрибута не работает ...

{{ form_row(form.keyword,  {'attr': {'ng-model': 'keyword'}} )}}

Мой пользователь отправляется в контроллер в качестве аргумента.

public function addAction(User $user = null, Request $request)

И это мой контроллер Angularjs, чего я хотел бы добиться, так это первоначально объявить ключевое слово с электронной почтой пользователя.

//$scope.keyword = $user.email.

То, что я делаю сейчас, - это изначально установка его на пустое, и поэтому он продолжает задавать атрибут value пустым.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Попробуйте это:

$scope.keyword = "{{ user.email }}";

Так как twig и Angularjs используют одну и ту же интерполяцию "{{}}".Вы можете настроить angularjs на использование другой строки интерполяции, например "[[]]";

0 голосов
/ 18 сентября 2018

В вашем контроллере вы должны использовать компонент Symfony Serializer для сериализации вашего пользователя, затем передать этот сериализованный объект как атрибут вашей веточке и десериализовать его в javascript:

use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class DefaultController extends AbstractController {
    ...
    public function addAction(User $user = null, Request $request, SerializerInterface $serializer){
        ...
        $serializedUser = $serializer->serialize($user, 'json');
        return $this->render('default/add_action.html.twig', [
            'user' => $serializedUser,
            'form' => $form->createView()
        ]);
    }

Помните, что если в вашей пользовательской сущности есть ассоциации сущностей, у вас могут возникнуть проблемы с циклическими ссылками.

В этом случае вы должны использовать группы сериализации (doc здесь ) при сериализации вашего пользователя следующим образом:

$serializedUser = $serializer->serialize($user, 'json', ['groups' => ['add-action']]);

Наконец, в вашей ветке, вам нужно сделать что-то подобное в вашем контейнере div:

<div id="form-container" ng-init="user = {{ user|e('html_attr') }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...