false)
{
$parameters = [];
try {
$data = $this->getApi()->parametersGetAll($isCommon)->getResult();
} catch (ApiException $e) {
$data = [];
$this->getDI()->getShared('logger')->error(
sprintf(
'An error occurred while getting parameters: "%s"',
$e->getMessage()
),
[
'method' => 'Grumpy\Model\Repository\AdvertParameter::getAll',
'params' => json_encode(\func_get_args()),
]
);
}
if ($this->isDataFromApiValid($data)) {
foreach ($data as $rawParameter) {
$parameter = $this->fromArray($rawParameter);
$parameters[] = $parameter;
$this->initDiOnEntity($parameter);
}
}
if ($parameters !== null && \in_array($sort, Parameters::SORT_FIELDS)) {
Parameters::sortParameters($parameters, $sort, $order);
}
return $parameters;
}
<?php
namespace Grumpy\Services\Categories;
use Grumpy\Applications\Frontend\Forms\Advert\NewAdvert;
use Grumpy\Forms\Elements\CsrfToken;
use Grumpy\Forms\Interfaces\ElementWithPlaceholders as ElementWithPlaceholdersInterface;
use Grumpy\Model\Entity\AdvertCategory;
use Grumpy\Model\Entity\AdvertParameter;
/**
* Обработка параметров, относящихся к категории
*/
class Parameters
{
/**
* Поля, по которым можно осуществлять сортировку параметров.
*/
const SORT_FIELDS = [
'id',
'name',
'label',
'formLabel',
'isRequired',
];
/**
* Выдает представление для параметров категории из формы поиска со стилями и возможными значениями
*
* @param \Grumpy\Model\Entity\AdvertCategory $category
* @return array
*/
public static function formPresenter(AdvertCategory $category) : array
{
$form = new NewAdvert($category);
$parameters = [];
/** @var \Grumpy\Forms\Interfaces\Element|\Grumpy\Traits\Element $element */
foreach ($form->getElements() as $element) {
// csrf не нужен в списке параметров
if ($element instanceof CsrfToken) {
continue;
}
$parameter = [
'attributes' => $element->getAttributes(),
'type' => $element->getType(),
'label' => $element->getLabel(),
'name' => $element->getName(),
'fieldData' => $element->getValues(),
];
if ($element instanceof ElementWithPlaceholdersInterface) {
$parameter['placeholders'] = $element->getPlaceholders();
}
$parameters[] = $parameter;
}
return $parameters;
}
/**
* Сортировка параметров.
*
* @param array $parameters
* @param string $sort
* @param string $order
*/
public static function sortParameters(array $parameters, $sort = 'id', $order = 'asc')
{
if (!\in_array($order, ['asc', 'desc'])) {
$order = 'asc';
}
$method = 'get' . $sort;
usort($parameters, function (Entity\AdvertParameter $p0, Entity\AdvertParameter $p1) use ($order, $method) {
// Сортируем числа
if (0 === strcmp($method, 'getIsRequired')) {
if ($p0->$method() === $p1->$method()) {
return 0;
}
return $p0->$method() <=> $p1->$method();
}
if (0 === strcmp($order, 'asc')) {
return strnatcasecmp($p0->$method(), $p1->$method());
}
return strnatcasecmp($p1->$method(), $p0->$method());
});
}
}
Ты правда думаешь, что кто-то будет твою простыню изучать?
да нет) не знаю, как еще скинуть
Обсуждают сегодня