Бэкенд Symfony4 с внешним интерфейсом реагирует.лучший и самый безопасный способ передачи информации? - PullRequest
0 голосов
/ 18 сентября 2018

Я изучаю React и хочу создать приложение с Symfony4 в качестве моего интерфейса и интерфейса React.Я застрял сейчас, когда мне нужно передать какие-то данные во внешний интерфейс из моего бэкэнда.Я действительно не знаю, как правильно это сделать?Следуя некоторым урокам, я делаю это так:

Из контроллера я отправляю некоторые данные в файл ветки:

/**
 * @Route("/")
 */
public function homepage()
{
    $date = new DateTime();
    $curr_date = $date->format('Y-m-d H:i:s');

    return $this->render('base.html.twig', [
        'gameDate' => $curr_date
    ]);
}

В файле ветки я устанавливаю его как атрибут данных

base.html.twig:

<div id="root" data-event-date="{{ gameDate }}">

Затем я могу получить переменную в виде набора данных в моем JavaScript

App.js:

const root = document.getElementById('root');

ReactDOM.render(<Homepage {...(root.dataset)}/>, root);

И рендеринг из реквизита.

Homepage.js:

class Homepage extends Component {
    constructor(props) {
        super(props)
        this.state = {
            prizePool: '',
            gameDate: '',
            numberOfPlayers: '' 
        }
    }

    onParticipateClick = (event) => {
        this.setState({prizePool: Math.random()})
    }

    render()
    {
        return (
            <div className="mt-c-10">
                 <GameInfoBox gameDate={this.props.eventDate}/>
            </div>
        )
    }
}

Это на самом деле работает, но я заинтересован в том, чтобы показать всю информацию в переменных данных, потому что каждый может ее увидеть.Что делать, если я хочу передать идентификатор пользователя или что-то секретное?Должен быть другой способ сделать это правильно?

1 Ответ

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

Зависит от того, что вы пытаетесь: если вы работаете над большим проектом, вы можете использовать API для обслуживания внутренних данных.Посмотрите здесь: https://www.modernjsforphpdevs.com/react-symfony-4-starter-repo/. Вот простой пример.

Но если вы хотите чего-то большего, используйте api-platform или FOSRestBundle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...