Ответы пользователя по тегу Yii
  • Yii как реализуются отзывы (комменты) для отдельной записи?

    @faradeifrontend Автор вопроса
    Использую пробелы для отступов ;)
    Решил, добавив новое поле computer_id в таблицу отзывов.
    И в контроллере $review->computer_id = $id;
    $comments = Review::find()->where(['computer_id' => $id]);


    Полный actionIndex
    spoiler
    public function actionIndex($id)
    	{
    
    		$model = new ReviewForm();
    
    		if ($model->load(Yii::$app->request->post())) {
    			if ($model->validate()) {
    				$review = new Review();
    				$review->setAttributes($model->getAttributes());
    				$review->computer_id = $id;
    				$review->save(false);
    
    				Yii::$app->session->setFlash('success', 'Данные приняты');
    				return $this->refresh();
    			} else {
    				Yii::$app->session->setFlash('error', 'Ошибка');
    			}
    		}
    
    		$comments = Review::find()
    			->where(['computer_id' => $id]);
    
    		$pagination = new Pagination([
    			'defaultPageSize' => 5,
    			'totalCount' => $comments->count(),
    		]);
    
    		$comments = $comments->orderBy('id Desc')
    			->offset($pagination->offset)
    			->limit($pagination->limit)
    			->all();
    
    		$computers = addComputer::findOne($id);
    
    		return $this->render('index', compact('model', 'comments', 'pagination', 'computers'));
    	}
    Ответ написан
    Комментировать
  • Как сделать редирект yii на прошлую страницу?

    @faradeifrontend Автор вопроса
    Использую пробелы для отступов ;)
    Нужно было изменить
    <?= Html::a('Редактировать', Url::to(['computer/update', 'id' => $comment->id])) ?>

    на
    <?= Html::a('Редактировать', Url::to(['computer/update', 'id' => $comment->id, 'cid'=>$computers['id'] ])) ?>

    И
    public function actionUpdate($id,$cid)
    	{
    		$model = new ReviewForm();
    		$comment = Review::findOne($id);
    
    		if ($model->load($this->request->post())) {
    
    			$comment->text = $model->text;
    			if ($comment->save(false)) {
    
    				return $this->redirect(["computer/", "id"=> $cid]);
    			}
    
    			Yii::$app->session->setFlash(
    				'success',
    				'Success'
    			);
    		}
    
    		$model->setAttributes($comment->getAttributes(['name', 'email', 'text']));
    		return $this->render('update', compact('model'));
    	}
    Ответ написан
    Комментировать
  • Как вывести картинку в Yii2 и указать список разрешенных расширений?

    @faradeifrontend Автор вопроса
    Использую пробелы для отступов ;)
    Решил изменив путь.
    <img src="/img/category/computers/zalman-z7-neo.200x200n.webp" alt="" width="200" height="200">

    и указав $model->img->saveAs после проверки валидации.
    Ответ написан
    Комментировать