Не могу получить массив всех узлов "дерева" (json данные) в контроллере.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Сергей2003
Сообщения: 92
Зарегистрирован: 2018.08.11, 11:07

Не могу получить массив всех узлов "дерева" (json данные) в контроллере.

Сообщение Сергей2003 »

Не могу получить массив всех узлов "дерева" ( json данные) в контроллере. В скрипте данные считываются правильно. В actionTree попадаю и все. Подскажите, пожалуйста, что я делаю не так.
Фрагмент конфига:

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

        'request' => [
            .................................................................
			'parsers' => [
				'application/json' => 'yii\web\JsonParser',
			]
        ],

Фрагмент jscript.js:

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

 $('#treeBtn').click(function() {
    var data = $(this).serializeArray();
//	alert(data);

	$.ajax ({
		type: 'post',
		url: '/site/tree',
		data: data,
        dataType: 'json'
	})
    .done(function(response) {
        if (response.data.success == true) {
            alert("Wow you commented");
        }
    })
    .fail(function(error) {
        console.log(error);
    })
    
    
    
    
});
Фрагмент контроллера:

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

public function actionTree()
    {
         Yii::$app->response->format = Response::FORMAT_JSON;
	 $items = \Yii::$app->request->post();
			
        return $items;

//       return $this->render('tree', [
//            'items' => $items,
//        ]);
    }
Последний раз редактировалось Сергей2003 2019.01.24, 10:56, всего редактировалось 1 раз.
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Не могу получить json-данные в контроллере.

Сообщение kawabanga »

может так? $params = \yii\helpers\BaseArrayHelper::merge(Yii::$app->getRequest()->getBodyParams(), $params);
Сергей2003
Сообщения: 92
Зарегистрирован: 2018.08.11, 11:07

Re: Не могу получить json-данные в контроллере.

Сообщение Сергей2003 »

На
$params = \yii\helpers\BaseArrayHelper::merge(Yii::$app->getRequest()->getBodyParams(), $params);
Выдается сообщение об ошибке:

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

Invalid argument supplied for foreach()
и выдается фрагмент кода:

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

  public static function merge($a, $b)
    {
        $args = func_get_args();
        $res = array_shift($args);
        while (!empty($args)) {
            foreach (array_shift($args) as $k => $v) {
                if ($v instanceof UnsetArrayValue) {
                    unset($res[$k]);
                } elseif ($v instanceof ReplaceArrayValue) {
                    $res[$k] = $v->value;
                } elseif (is_int($k)) {
                    if (array_key_exists($k, $res)) {
                        $res[] = $v;
                    } else {
                        $res[$k] = $v;
]
Что-то я запутался. Может кто-нибудь подскажет. Я должен получить массив "дерева" категорий со всеми узлами. В скрипте все нормально получается. Но в контроллере ничего не могу получить. Пожалуйста, помогите.
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Не могу получить массив всех узлов "дерева" (json данные) в контроллере.

Сообщение proctoleha »

Если совсем беда, попробуйте связаться со мной в скайпе с 17-00 до 19-00 MSK. Логин в скайпе такой же как на форуме
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Ответить