Страница 1 из 1
не работает сортировка
Добавлено: 2019.01.19, 21:48
riaron
Не работает сортровка
Код: Выделить всё
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]);
}
}
Re: не работает сортировка
Добавлено: 2019.01.19, 22:56
Rodman
Так а какие симптомы? что то говорит или не правильные данные выдает на твой взгляд?
Re: не работает сортировка
Добавлено: 2019.01.19, 23:34
riaron
срабатывает сценарий else
Re: не работает сортировка
Добавлено: 2019.01.20, 03:57
andku83
Re: не работает сортировка
Добавлено: 2019.01.20, 09:55
Rodman
Значит не проходит валидация или пост не грузится... нужно попробовать отдельно их проверить и опознать кто виноват и того полечить
Re: не работает сортировка
Добавлено: 2019.01.21, 16:26
riaron
вот весь код вроде все правильно но работает сценарий 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>
Re: не работает сортировка
Добавлено: 2019.01.21, 21:32
andku83
Код: Выделить всё
if ($car->load(Yii::$app->request->post(), '') && $car->validate()) {
Re: не работает сортировка
Добавлено: 2019.01.21, 22:28
riaron
не помогло
Re: не работает сортировка
Добавлено: 2019.01.22, 11:59
andku83
riaron писал(а): ↑2019.01.21, 22:28
не помогло
Что говорит вардамп?
Re: не работает сортировка
Добавлено: 2019.01.22, 18:43
riaron
поставил 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]);
}