не работает сортировка

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

не работает сортировка

Сообщение riaron » 2019.01.19, 21:48

Не работает сортровка

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

 public function actionCar()
     {        $car= new Car();


         if ($car->load(Yii::$app->request->post()) && $car->validate()) {
                 $cars = Cars::find()->orderBy([$car->sort=>SORT_ASC]);
                 $pagination = new Pagination(['totalCount' => $cars->count(),
                     'defaultPageSize' => 6]);
                 $cars = $cars->offset($pagination->offset)->limit($pagination->limit)->all();
             return $this->render('cars', ['cars' => $cars, 'pagination' => $pagination]);

         }else{
             $cars = Cars::find();
             $pagination = new Pagination(['totalCount' => $cars->count(),
                 'defaultPageSize'=>6]);
             $cars = $cars->offset( $pagination->offset )->limit( $pagination->limit )->all();
             return $this->render('cars', ['cars' => $cars,'pagination' => $pagination]);
         }

     }

Rodman
Сообщения: 44
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Re: не работает сортировка

Сообщение Rodman » 2019.01.19, 22:56

Так а какие симптомы? что то говорит или не правильные данные выдает на твой взгляд?

riaron
Сообщения: 49
Зарегистрирован: 2018.12.04, 14:12

Re: не работает сортировка

Сообщение riaron » 2019.01.19, 23:34

срабатывает сценарий else

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: не работает сортировка

Сообщение andku83 » 2019.01.20, 03:57

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

 ...
         }else{
             var_dump($car->errors);
             ...
         }

Rodman
Сообщения: 44
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Re: не работает сортировка

Сообщение Rodman » 2019.01.20, 09:55

Значит не проходит валидация или пост не грузится... нужно попробовать отдельно их проверить и опознать кто виноват и того полечить

riaron
Сообщения: 49
Зарегистрирован: 2018.12.04, 14:12

Re: не работает сортировка

Сообщение riaron » 2019.01.21, 16:26

вот весь код вроде все правильно но работает сценарий else
Модель

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

<?php
namespace app\models;

use yii\base\Model;

class Car extends model
{
    public $sort;
    public function attributeLabels(){
        return [
            'sort'=> 'sort',
        ];
    }
    public function rules()
    {
        return [
            [['sort'], 'required'],
        ];
    }
}
контроллер

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

public function actionCar()
    {
        $car = new Car();
        if ($car->load(Yii::$app->request->post()) && $car->validate()) {

            $cars = Cars::find()->all();


            return $this->render('car', ['cars' => $cars]);
        } else {
            // либо страница отображается первый раз, либо есть ошибка в данных
            //return $this->render('car', ['model' => $baskets]);
            echo 123;
        }
    }
Представление

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

<?php
use yii\widgets\LinkPager;
use yii\helpers\Url;
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use app\models\Cars;

$param=array(1,2,3);
$items=array('itemprice'=>'Цене','producer'=>'Производителю','power'=>'Мощности','acsel'=>'Разгону до 100км/ч','topspeed'=>'Максимальной скорости');

foreach ($cars as $carss){
    $carss->photo = substr_replace($carss->photo, null, 0, 3);
    $url =Url::toRoute(['/site/atb','id'=>$carss->car_id,'good'=>'car','qty'=>1]);
    $url1 =Url::toRoute(['/site/cartcar','id'=>$carss->car_id,]);
    echo "
    <div class='product'>
        <img class='wphoto' src='../web/$carss->photo'><br>
        <a>$carss->car_name</a><br>
        <a>$carss->itemprice</a><br>
        <a href='$url'>Добавить</a><br>
        <a href='$url1'>Подробнее</a>
        </div>
";}
?>
<div class="sort">
    <?php $form = ActiveForm::begin(['options' => ['id' => 'inputform', 'options' => ['class' => 'inputform','enctype' => 'multipart/form-data']]])?>
    <? echo Html::dropDownList('sort', '', $items, $param);?>
    <?=Html::submitButton('Отправить', ['class' => 'btn btn-success'])?>
    <?php ActiveForm::end() ?></div>

<div class="pagination">
    <?//echo LinkPager::widget(['pagination' => $pagination,]); ?></div>

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: не работает сортировка

Сообщение andku83 » 2019.01.21, 21:32

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

         if ($car->load(Yii::$app->request->post(), '') && $car->validate()) {

riaron
Сообщения: 49
Зарегистрирован: 2018.12.04, 14:12

Re: не работает сортировка

Сообщение riaron » 2019.01.21, 22:28

не помогло

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: не работает сортировка

Сообщение andku83 » 2019.01.22, 11:59

riaron писал(а):
2019.01.21, 22:28
не помогло
Что говорит вардамп?
andku83 писал(а):
2019.01.20, 03:57

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

 ...
         }else{
             var_dump($car->errors);
             ...
         }

riaron
Сообщения: 49
Зарегистрирован: 2018.12.04, 14:12

Re: не работает сортировка

Сообщение riaron » 2019.01.22, 18:43

поставил else сценарий по умолчанию и заработало.

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

  return $this->render('car', ['car' => $car,'cars' => $cars,'pagination'=>$pagination]);
        } else {
            // либо страница отображается первый раз, либо есть ошибка в данных
            $cars = Cars::find()->orderBy('car_id')->all();
            $pagination = new Pagination(['totalCount' => count($cars),
                'defaultPageSize' => 6]);
            $cars = Cars::find()->orderBy('car_id')->offset($pagination->offset)->limit($pagination->limit)->all();

            return $this->render('car', ['car' => $car,'cars' => $cars,'pagination'=>$pagination]);
        }

Ответить