amio
@amio
Newbie web-developer)

Yii2: Почему не возвращается массив?

Добрый день.

Есть функция которая должна вернуть объект из таблицы партнеров в виде массива.

public function actionGetPartner($id){
        $partner = Partner::find()->where(['id' => (int)$id])->asArray()->one();
        return $partner;
    }


Но почему то ошибка:
Invalid Parameter – yii\base\InvalidParamException
Response content must not be an array.

Если сделать не return а вардамп то массив нормально распечатывается и все ок.

В чем может быть проблема?
  • Вопрос задан
  • 3835 просмотров
Решения вопроса 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Но почему то ошибка:
Invalid Parameter – yii\base\InvalidParamException
Response content must not be an array.

Потому что ответ сервера не может быть массивом. Так и написано. Возвращайте в виде json, он для этого и нужен.
Ответ написан
Комментировать
@Snewer
Потому что вы в контроллере должны по умолчанию вернуть строку, а не массив.

Для проверки массива сделайте, например,
public function actionGetPartner($id){
        $partner = Partner::find()->where(['id' => (int)$id])->asArray()->one();
        print_r($partner );
    }


Или укажите, что контроллер возвращает JSON:
public function actionGetPartner($id){
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $partner = Partner::find()->where(['id' => (int)$id])->asArray()->one();
        return $partner;
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexKuznec
Если это просто функция, уберите "action" из названия. Экшены должны возвращать ответ сервера в виде строки (обычно html или json).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы