ajax ЧАТ

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

ajax ЧАТ

Сообщение riaron »

выводит Invalid argument supplied for foreach()
вот контроллер:

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

<?php  public function actionChat()
  {
  if (Yii::$app->request->isAjax) {

  $data=(Yii::$app->request->post());

    $chat= new Chat();
    if( $chat->load($data) ){
        if( $chat->save() ){
          Yii::$app->session->setFlash('success', 'Данные приняты');
        }else{
          Yii::$app->session->setFlash('error', 'Ошибка');
        }
      }
      $message = Message::find();
      $pagination = new Pagination(['totalCount' => $message->count(),
          'defaultPageSize'=>20]);
      $message = $message->offset( $pagination->offset )->limit( $pagination->limit )->all();
      return [
            'message' => $message,
            'code' => 200,
        ];

      }

return $this->render('chat', ['message' => $message,'pagination' => $pagination]);


    }
вот вид:

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

<?php

use yii\widgets\ActiveForm;
use yii\helpers\Html;
use yii\widgets\Pjax;?>
<?php Pjax::begin(); ?>
<?foreach($message as $messages){
  echo $messages->fromm.'<br>'.
   $messages->too.'<br>'.
  $messages->text.'<br>';
};?>
<?php Pjax::end(); ?>


<?php $form = ActiveForm::begin(['options' => ['id' => 'inputform', 'options' => ['class' => 'inputform','enctype' => 'multipart/form-data']]])?>
<?= $form->field($model, 'fromm')?>
<?= $form->field($model, 'too')?>
<?= $form->field($model, 'text')->textarea(['rows' => '6'])?>

<?= Html::submitButton('Отправить', ['class' => 'btn btn-success'])?>
<?php ActiveForm::end() ?>
Prooksius
Сообщения: 100
Зарегистрирован: 2019.01.17, 23:24

Re: ajax ЧАТ

Сообщение Prooksius »

У вас в контроллере идет проверка является ли запрос Аяксом. И только в этом случае инициализируется переменная $message.
Если же запрос просто Post, как в случае нажатия на кнопку "Отправить" в вашей форме, то переменная $message == NULL и отсюда ошибка.
Неправильно организован контроллер.
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

Re: ajax ЧАТ

Сообщение riaron »

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

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

    public function actionChatt()
  {
    if( Yii::$app->request->isAjax ){
        debug(Yii::$app->request->post());
        return 'chatt';
    }

    $model = new Chatt();
    if( $model->load(Yii::$app->request->post()) ){

        if( $model->save() ){
            Yii::$app->session->setFlash('success', 'Данные приняты');
        }else{
            Yii::$app->session->setFlash('error', 'Ошибка');
        }
    }

    $message = Message::find();
        $pagination = new Pagination(['totalCount' => $message->count(),
            'defaultPageSize'=>20]);
        $message = $message->offset( $pagination->offset )->limit( $pagination->limit )->all();
        return $this->render('chatt', ['model'=>$model,'message' => $message,'pagination' => $pagination]);

  }
вью осталась той же
Prooksius
Сообщения: 100
Зарегистрирован: 2019.01.17, 23:24

Re: ajax ЧАТ

Сообщение Prooksius »

https://sohabr.net/habr/post/310888/ - вот почитайте, вроде бы тоже самое человек делает
Ответить