JS должен ставить PHP код

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

JS должен ставить PHP код

Сообщение Zik_UA »

Работаю над одним проектом где есть одна JS функция.

Код: Выделить всё

$("#add-element").html(data); 
Сейчас она возвращает значение. А нужно чтобы в данный элемент всавляли PHP код

Я попытался следующее

Код: Выделить всё

$("#add-element").html("<?php $sub_categoris =\'" + data +"\'; ?>");
Но мне вместо кода вставляет:

Код: Выделить всё

<---?php $sub_categoris =\'" + data +"\'; ?--->
Как исправить и вообще возможно
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: JS должен ставить PHP код

Сообщение rak »

что нужно сделать то? из текущего описания я лично ничего не понял
Restlin
Сообщения: 139
Зарегистрирован: 2011.09.09, 18:12

Re: JS должен ставить PHP код

Сообщение Restlin »

Я много видел такого кода, когда JS скрипты помещали внутри php-файлов и формировали подобный "вариантивный js код" с подставленными значениями из PHP.
На мой взгляд это смешивание языков программирования, зон ответственности и ужасная читаемость.
ТС, вы ведь можете поместить нужные вам даннные в hiddenInput, откуда уже можете их забрать на JS или использовать ajax для получения актуальных данных со стороны сервера. Зачем вам смесь PHP и JS?
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: JS должен ставить PHP код

Сообщение Йож »

Restlin, тут наоборот - человек хочет с помощью Javascript вставить php код.
Это ужас - php - серверный язык, его никак не вставить с помощью Яваскрипта.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: JS должен ставить PHP код

Сообщение Nerf »

Чито? Вы понимаете что php на сервере, js на клиенте, понимаете как это все работает? Это в принципе не реализовать.
Если нужно, чтобы js был динамическим, то сам js должен собираться через php.
Restlin
Сообщения: 139
Зарегистрирован: 2011.09.09, 18:12

Re: JS должен ставить PHP код

Сообщение Restlin »

Йож писал(а): 2017.02.06, 18:50 Restlin, тут наоборот - человек хочет с помощью Javascript вставить php код.
Это ужас - php - серверный язык, его никак не вставить с помощью Яваскрипта.
Да, теперь я понял всю глубину проблемы
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

Хорошо. Пойдем другим путем. Возможно можно через пхп вывести скрипт

Код: Выделить всё

$params = [
    'prompt' => 'Виберіть тип оголошення...',
    'onchange' => '$.post( "index.php?r=post/categories&id='.'"+$(this).val(), function(data) {
        var zik = data;
    });'
];

$items = [
    '1' => '1',
    '2' => '2',
    '3'=>'3',
    '4'=>'4',
];

$form->field($model, 'type_id')->dropDownList($items,$params);
Как в $sub_cat вывести переменную var zik ?????????
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

Не могу понять как использовать данный плагин
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

ElisDN писал(а): 2017.02.06, 22:37 Поставьте http://demos.krajee.com/widget-details/depdrop
Не могу понять как использовать данный плагин
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: JS должен ставить PHP код

Сообщение rak »

Zik_UA писал(а): 2017.02.06, 22:52
ElisDN писал(а): 2017.02.06, 22:37 Поставьте http://demos.krajee.com/widget-details/depdrop
Не могу понять как использовать данный плагин
там же есть примеры, что именно не понятно?
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

rak писал(а): 2017.02.06, 23:48
Zik_UA писал(а): 2017.02.06, 22:52
ElisDN писал(а): 2017.02.06, 22:37 Поставьте http://demos.krajee.com/widget-details/depdrop
Не могу понять как использовать данный плагин
там же есть примеры, что именно не понятно?
Там пример как при выборе элемента из одного списка подтягивает список для второго а мне нужно чтобы подтягивало конкретный контент.

Делаю форму заказа товара и при выборе способа доставки должно меняться еементы меню
Medic84
Сообщения: 61
Зарегистрирован: 2017.01.28, 17:48

Re: JS должен ставить PHP код

Сообщение Medic84 »

Zik_UA писал(а): 2017.02.07, 11:20 Делаю форму заказа товара и при выборе способа доставки должно меняться еементы меню
Так в чем проблема? Вам достаточно чтобы при выборе radioButton срабатывало событие OnChange и при помощи Ajax подгружался нужный контент.

К примеру во вьюхе пишем:

Код: Выделить всё

$radio_js = "$(\"input[name=radio]\").on('change', function() {
  $.ajax({
    url: '/controller/getdata',
    type: \"POST\",
    data: '?radio=' + this.value,
    success: function (data) {
      // парсим переменную data (лучше конечно чтобы ответы генерировал отдельный контроллер) и меняем через jQuery значения элементов необходимого поля. Профит.
    }
  });
});";
$this->registerJs($radio_js);
А в контроллере можно писать что то типа:

Код: Выделить всё

public function behaviors()
    {
        return [
            [
            'class' => 'yii\filters\ContentNegotiator',
            'formats' => [
                'application/json' => yii\web\Response::FORMAT_JSON,
                ],
            ],
            'access' => [
                'class' => 'yii\filters\AccessControl',
                'rules' => [
                    [
                        'allow' => false,
                        'verbs' => ['GET'],
                        'denyCallback' => function ($rule, $action) {
                                throw new \yii\web\HttpException(405, 'Доступ запрещен. Данный метод не поддерживается.');
                        }
                    ],
                    [
                        'allow' => true,
                        'verbs' => ['POST'],
                    ],
                ],
            ],
        ];
    }

public function beforeAction($action){
        if (!parent::beforeAction($action)) {
            return false;
        }

        if (!Yii::$app->request->isAJAX) {
            throw new \yii\web\HttpException(403, 'Доступ запрещен. Обратитесь к администратору.');
            return false;
        }

        return true;
    }
    
    public function actionGetdata()
    {
        return array('data' => array('1','2','и т.д.'));
    }
    
Мой код из рабочего проекта, где за AJAX ответы отвечает отдельный контроллер
Последний раз редактировалось Medic84 2017.02.07, 15:58, всего редактировалось 2 раза.
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: JS должен ставить PHP код

Сообщение Йож »

Zik_UA писал(а): 2017.02.07, 11:20 Делаю форму заказа товара и при выборе способа доставки должно меняться еементы меню
Depdrop тут Вам не помощник.
Нужно просто подтягивать AJAXом нужный контент на событие onchange.
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

Йож писал(а): 2017.02.07, 14:25
Zik_UA писал(а): 2017.02.07, 11:20 Делаю форму заказа товара и при выборе способа доставки должно меняться еементы меню
Depdrop тут Вам не помощник.
Нужно просто подтягивать AJAXом нужный контент на событие onchange.
Спасибо. я так и думал что Depdrop не подойдет. Могли бы вы дать хоть какие-то пример кода с вашим вариантом решения. или как должен выглядеть событие onchange.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: JS должен ставить PHP код

Сообщение rak »

выше есть пример
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

Спасибо всем наконец получилось.
Есть еще один вопрос. Нужно в ActiveForm прописать чтото чтобы забрать теги form
Medic84
Сообщения: 61
Зарегистрирован: 2017.01.28, 17:48

Re: JS должен ставить PHP код

Сообщение Medic84 »

Zik_UA писал(а): 2017.02.08, 10:43 Есть еще один вопрос. Нужно в ActiveForm прописать чтото чтобы забрать теги form
Выражайтесь яснее. Что значит забрать?
Куда и для чего.
Zik_UA
Сообщения: 22
Зарегистрирован: 2017.02.03, 00:19

Re: JS должен ставить PHP код

Сообщение Zik_UA »

Код: Выделить всё

<form>
	<input>
	<input>
	<select>
		<opion>1</option>
		<opion>2</option>
	</select>
	<form>
		<input>
		<input>
	</form>
	<input>
</form>
После выбора из селект мне в форму рендерить файл с формой. Нужно в нем забрать теги форм
Medic84
Сообщения: 61
Зарегистрирован: 2017.01.28, 17:48

Re: JS должен ставить PHP код

Сообщение Medic84 »

Zik_UA писал(а): 2017.02.08, 11:15 После выбора из селект мне в форму рендерить файл с формой. Нужно в нем забрать теги форм

Код: Выделить всё

<form id="forma">

</form>
В JS пишешь

Код: Выделить всё

var data = $('#forma').serialize();
// или
var data = $('#forma').serializeArray();
И отправляешь data куда душе угодно
Ответить