Выбрасывается ошибка Argument 1 passed to GrumpyServicesCategoriesParameters::GrumpyServicesCa

akingenious

Код (Text):
  1. public function getAll($sort=”id”, $order=”asc”, $isCommon = false)
  2. {
  3.     $parameters = [];
  4.  
  5.     try {
  6.         $data = $this->getApi()->parametersGetAll($isCommon)->getResult();
  7.     } catch (ApiException $e) {
  8.         $data = [];
  9.  
  10.         $this->getDI()->getShared(‘logger’)->error(
  11.             sprintf(
  12.                 ‘An error occurred while getting parameters: “%s”‘,
  13.                 $e->getMessage()
  14.             ),
  15.             [
  16.                 ‘method’ => ‘GrumpyModelRepositoryAdvertParameter::getAll’,
  17.                 ‘params’ => json_encode(func_get_args()),
  18.             ]
  19.         );
  20.     }
  21.  
  22.     if ($this->isDataFromApiValid($data)) {
  23.         foreach ($data as $rawParameter) {
  24.             $parameter    = $this->fromArray($rawParameter);
  25.             $parameters[] = $parameter;
  26.             $this->initDiOnEntity($parameter);
  27.         }
  28.     }
  29.  
  30.     if ($parameters !== null && in_array($sort, Parameters::SORT_FIELDS)) {
  31.         Parameters::sortParameters($parameters, $sort, $order);
  32.     }
  33.  
  34.     return $parameters;
  35. }
  36.  
  37.  
  38. <?php
  39. namespace GrumpyServicesCategories;
  40.  
  41. use GrumpyApplicationsFrontendFormsAdvertNewAdvert;
  42. use GrumpyFormsElementsCsrfToken;
  43. use GrumpyFormsInterfacesElementWithPlaceholders as ElementWithPlaceholdersInterface;
  44. use GrumpyModelEntityAdvertCategory;
  45. use GrumpyModelEntityAdvertParameter;
  46.  
  47. /**
  48. * Обработка параметров, относящихся к категории
  49. */
  50. class Parameters
  51. {
  52.     /**
  53.      * Поля, по которым можно осуществлять сортировку параметров.
  54.      */
  55.     const SORT_FIELDS = [
  56.         ‘id’,
  57.         ‘name’,
  58.         ‘label’,
  59.         ‘formLabel’,
  60.         ‘isRequired’,
  61.     ];
  62.  
  63.     /**
  64.      * Выдает представление для параметров категории из формы поиска со стилями и возможными значениями
  65.      *
  66.      * @param  GrumpyModelEntityAdvertCategory $category
  67.      * @return array
  68.      */
  69.     public static function formPresenter(AdvertCategory $category) : array
  70.     {
  71.         $form       = new NewAdvert($category);
  72.         $parameters = [];
  73.  
  74.         /** @var GrumpyFormsInterfacesElement|GrumpyTraitsElement $element */
  75.         foreach ($form->getElements() as $element) {
  76.             // csrf не нужен в списке параметров
  77.             if ($element instanceof CsrfToken) {
  78.                 continue;
  79.             }
  80.  
  81.             $parameter = [
  82.                 ‘attributes’ => $element->getAttributes(),
  83.                 ‘type’       => $element->getType(),
  84.                 ‘label’      => $element->getLabel(),
  85.                 ‘name’       => $element->getName(),
  86.                 ‘fieldData’  => $element->getValues(),
  87.             ];
  88.  
  89.             if ($element instanceof ElementWithPlaceholdersInterface) {
  90.                 $parameter[‘placeholders’] = $element->getPlaceholders();
  91.             }
  92.  
  93.             $parameters[] = $parameter;
  94.         }
  95.  
  96.         return $parameters;
  97.     }
  98.  
  99.     /**
  100.      * Сортировка параметров.
  101.      *
  102.      * @param array  $parameters
  103.      * @param string $sort
  104.      * @param string $order
  105.      */
  106.     public static function sortParameters(array $parameters, $sort=”id”, $order=”asc”)
  107.     {
  108.         if (!in_array($order, [‘asc’, ‘desc’])) {
  109.             $order=”asc”;
  110.         }
  111.  
  112.         $method = ‘get’ . $sort;
  113.  
  114.         usort($parameters, function (EntityAdvertParameter $p0, EntityAdvertParameter $p1) use ($order, $method) {
  115.             // Сортируем числа
  116.             if (0 === strcmp($method, ‘getIsRequired’)) {
  117.                 if ($p0->$method() === $p1->$method()) {
  118.                     return 0;
  119.                 }
  120.  
  121.                 return $p0->$method() <=> $p1->$method();
  122.             }
  123.  
  124.             if (0 === strcmp($order, ‘asc’)) {
  125.                 return strnatcasecmp($p0->$method(), $p1->$method());
  126.             }
  127.  
  128.             return strnatcasecmp($p1->$method(), $p0->$method());
  129.         });
  130.     }
  131. }

Появляется ошибка при попытке отсортировать массив параметров
Argument 1 passed to GrumpyServicesCategoriesParameters::GrumpyServicesCategories{closure}() must be an instance of GrumpyServicesCategoriesEntityAdvertParameter, instance of GrumpyModelEntityAdvertParameter given in /var/www/market/src/Grumpy/Services/Categories/Parameters.php on line 77

 

ADSoft

попробуйте перевести просто, а?
найдите строку 77 и посмотрите какого типа передаете данные

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *