Обратились ко мне с предложением внести некоторые правки на сайте, который разработан на yii2.
Пока требовалось настроить urlManager(), но будут и ещё куча правок.
Сайт по продаже/найму автомобилей.
Заглянув в один из контроллеров я немного "завис". Контроллер из 1 500 строк, большинство действий в нём получают информацию из базы об автомобилях, но с разными параметрами.
Вот пример такого действия, выбор из базы автомобилей в заданном регионе.
Код: Выделить всё
public function actionSearchByRegion($region = null)
{
if (\Yii::$app->request->isGet) {
$region = \Yii::$app->request->get('region-name');
$region = str_replace('-', ' ', $region);
// $region = substr($region, 0, 5);
$region = Regions::find()
->select('region_id')
->where(['like', 'region_name', $region])
->asArray()
->one();
if (!empty($region)) {
$cars = Cars::find()
->where(['=', 'car_region', $region['region_id']])
->andWhere(['=', 'car_sold', 0])
->orderBy(['id' => SORT_DESC])
->asArray();
$query = $cars;
$countQuery = clone $query;
$pages = new Pagination([
'totalCount' => $countQuery->count(),
'defaultPageSize' => 12,
]);
$models = $query->offset($pages->offset)->limit($pages->limit)->all();
return $this->render('search', [
'cars_res' => $models,
'pages' => $pages,
]);
}
}
}
<b>Поисковой модели как таковой нет, есть, опять же, отдельное действие для поиска.
Связей между моделями нет, внешних ключей нет. При этом в debug панели показывает свыше 150 запросов к базе данных.</b>
В представлениях, которые подключает данный контроллер есть, на мой взгляд, совсем "прекрасный" код.
Код: Выделить всё
<?= $form->field($searchcar, 'city')->label('Okres')->dropDownList(
// ArrayHelper::map(\backend\models\City::find()->where(['region_id' => $searchcar->state])->asArray()->all(), 'city_id', 'city_name'),
ArrayHelper::map(\backend\models\City::find()->where(['region_id' => $_GET['SearchCar']['state'] ? $_GET['SearchCar']['state'] : $_GET['region']])->asArray()->all(), 'city_id', 'city_name'),
[
'prompt' => 'Vyberte okres',
///'value' => $_GET['SearchCar']['city'] ? $_GET['SearchCar']['city'] : $_GET['city']
]
) ?>
Опыта у меня не очень много, поэтому хотелось бы узнать мнение более опытных людей, что с этим кодом делать?
Оставить как есть и вносить мелкие правки или всё таки предложить переписать?
Чего именно хотел добиться предыдущий разработчик таким кодом(отсутствием связей, внешних ключей и т.д.)?
Что мне сказать заказчику по поводу правок?