Во-первых, одна из следующих строк вашего кода является излишней в вашем контроллере, потому что вторая перезаписывает результат первого:
$members = $this->memberRepository->findAllSorted(array($sortField => $sortDir ));
$members = $this->memberRepository->findAll();
Вторая проблема заключается в том, что вы могли просто забытьзаголовок в вашем вопросе, или вы поместили функцию в контроллер вместо хранилища, это относится, по крайней мере, к хранилищу:
public function findAllSorted($sorting = NULL) {
$query = $this->createQuery();
$query->setOrderings($sorting);
return $query->execute();
}
В классе модели все еще есть две проблемы:
пространство имен может отсутствовать, обычно это 2-я строка в файле и выглядит так:
namespace Vendor\ExtensionName\Domain\Model;
, где Vendor
и ExtensionName
должны быть заменены на вашисобственные значения.
Аннотации отсутствуют, они используются для проверки полей, даже если они помечены как php-комментарии.
Так что все вместефайл вашей модели должен выглядеть следующим образом:
<?php
namespace Vendor\ExtensionName\Domain\Model; // replace 'vendor' and 'ExtensionName' by your own values
class Member extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* name
*
* @var string
*/
protected $name;
/**
* email
*
* @var string
* @validate EmailAddress
*
* @see \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator
* @see https://docs.typo3.org/typo3cms/extensions/configuration_object/04-Administration/Validators/Index.html
* @important never accepts umlauts in the complete email-address, validate it individually to allow those addresses!
*/
protected $email;
/**
* Returns the name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Sets the name
*
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* Returns the email
*
* @return string $email
*/
public function getEmail()
{
return $this->email;
}
/**
* Sets the email
*
* @param string $email
*/
public function setEmail($email)
{
$this->email= $email;
}
}
На ваш вопрос:
Причины совершенно неясны, почему объекты никогда не возвращают желаемые значения, в том числе и потому, чтоты никогда не прovided код всего расширения.
Вот разумные причины:
- Методы
findAll()
и / или findAllSorted
в классе репозитория кодируются так, чтобы возвращать только uid каждой записи,Этот случай маловероятен, но я просто упомянул об этом. - Поля не настроены в
ext_tables.sql
и Configuration/TCA/tx_yourextension_domain_model_member.php
(замените tx_ yourextension _... на ваше значение).
Возможны другие причиныподумайте, но, возможно, вы сначала проверите пункты, которые я упомянул, и дадите отзыв.При необходимости вы можете дать больше информации, а я могу расширить свой ответ.