Как подружить PHP и React JS?

Я только начал изучать Node + React JS, Redux. Полный чайник.
Уважаемые гуру ткните пальцем в решении данной задачи.
Имеется на smarty php не большой сайт недвижимости. Все запросы происходят через базу MYSQL.
Подскажите (если есть такое решение, а лучше примером показать или ссылками на конкретную документацию с примерами) как правильно сделать что в Reacte можно было принимать и отправлять запросы из mysql?

пример:
подключил react
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.js"></script>
<!-- мой файл react js -->
<script type="text/babel" src="{$estate_folder}/template/frontend/{$current_theme_name}/js/main.js"></script>


дальше я делаю выборку из базы на smarty php
private function getAgents()
    {
        $ret = array();
        $DBC = DBC::getInstance();
        $query = 'SELECT * FROM ' . DB_PREFIX . '_user WHERE group_id<>4 AND login<>\'_unregistered\' ORDER BY RAND() LIMIT 3';
        $stmt = $DBC->query($query);

        if ($stmt) {
            while ($ar = $DBC->fetch($stmt)) {
                $ret[] = $ar;
            }
        }
        $js_obj = json_encode($res);
        $this->template->assign('agentslist_items', $ret);
    }

далее вывожу в смарти через foreach, не буду писать полный вывод, скажем так , что в шаблон средствами сматри все отдается.
но если подключить саму переменную $js_obj , то она пустая
{literal}
<script>
    var obj=$js_obj; 
    alert(obj);
</script>
{/literal}
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ответы на вопрос 2
OnYourLips
@OnYourLips
Не объединяйте React и PHP в одном приложении. Создавайте два разных проекта.
И все общение между ними сведите до REST, например.

Используйте в этих разных проектах свои системы сборки (какой-то костыль для обоих ни к чему хорошему не приведет, в Laravel пытались). Разместите их на разных сабдоменах потом в продакшене.
Ответ написан
@McBernar
Так не делают. Смысл реакта теряется.

Вся суть js-фреймворков в том, чтобы выделить фронтенд в отдельное приложение, работающее с бекендом по апи. А что уж там будет на беке— laravel, чистый php, нода или питон — совершенно неважно.

Реакт — это стейт-ориентированный продукт. Работаем от состояния. Php — чистая mvc-классика.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы