iam regreting за последние два дня с тех пор, как я понял, что могу создать зашифрованный пользовательский тип, чтобы шифрование и дешифрование данных выполнялись в этом типе, так что мне не нужно было бы вызывать эти функции evrytime, как правило, чтобы облегчить мою жизнь, но превратить ее в живой ад:/Doctrine2 Custom Type Not Returning Data
Мой пользовательский тип вставляет зашифрованные данные в базу данных, как я думал, но проблема в том, когда мне нужно получить данные, вот отпечаток объекта, который держит retrived данных из базы данных
Uapi\CoreBundle\Entity\Request Object
(
[id:Uapi\CoreBundle\Entity\Request:private] => 2
[clientIPAdress:Uapi\CoreBundle\Entity\Request:private] =>
[clientHost:Uapi\CoreBundle\Entity\Request:private] =>
[clientISP:Uapi\CoreBundle\Entity\Request:private] =>
[clientOS:Uapi\CoreBundle\Entity\Request:private] =>
[clientOSVersion:Uapi\CoreBundle\Entity\Request:private] =>
[clientBrowser:Uapi\CoreBundle\Entity\Request:private] =>
[clientBrowserVersion:Uapi\CoreBundle\Entity\Request:private] =>
[clientLanguage:Uapi\CoreBundle\Entity\Request:private] =>
[clientCountry:Uapi\CoreBundle\Entity\Request:private] =>
[clientCity:Uapi\CoreBundle\Entity\Request:private] =>
[possibleProxy:Uapi\CoreBundle\Entity\Request:private] =>
[proxyIPAdress:Uapi\CoreBundle\Entity\Request:private] =>
[torExitNode:Uapi\CoreBundle\Entity\Request:private] =>
[maliciousInput:Uapi\CoreBundle\Entity\Request:private] =>
[maliciousInputLog:Uapi\CoreBundle\Entity\Request:private] =>
[serverIPAdress:Uapi\CoreBundle\Entity\Request:private] =>
[serverPort:Uapi\CoreBundle\Entity\Request:private] =>
[requestMethod:Uapi\CoreBundle\Entity\Request:private] =>
[requestTimeFloat:Uapi\CoreBundle\Entity\Request:private] => P�a�;
)
Вот мое Зашифрованные типа определения класса
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Uapi\CoreBundle\Provider\EncryptionProvider;
class EncryptedType extends Type {
const ENCRYPTED = 'encrypted';
public function getName()
{
return self::ENCRYPTED;
}
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) {
return $platform->getVarcharTypeDeclarationSQL($fieldDeclaration);
}
public function convertToDatabaseValue($value, AbstractPlatform $platform) {
return ($value === null)? null : base64_encode(EncryptionProvider::getCrypter()->encrypt($value));
}
public function convertToPHPValue($value, AbstractPlatform $platform) {
return ($value === null)? null : base64_decode(EncryptionProvider::getCrypter()->decrypt($value));
}
}
И я сделал зарегистрировать его в функции загрузки в ядро расслоением класса
$connection = $this->container->get('doctrine')->getConnection();
if(!Type::hasType('encrypted'))
{
Type::addType('encrypted', 'Uapi\CoreBundle\System\DBALType\EncryptedType');
$connection->getDatabasePlatform()->registerDoctrineTypeMapping('encrypted', 'encrypted');
}
В чем вопрос? Что не работает? Любые исключения? Что вы уже пробовали? – nifr
Просто прочитайте вопрос человек, я на краю здесь, я не получаю данные из базы данных, как вы можете видеть из печатного объекта, у него просто пустые свойства – user3035443
Прочитайте какой вопрос «* man *»? Я не вижу вопросительного знака где-нибудь в вашем удивительно подробном «вопросе *» ... ... btw пользовательские типы обычно добавляются в разделе конфигурации DoctrineBundle под 'doctrine.dbal.types' в вашем' app/config/config .yml' или какой-либо файл, который импортируется там, где находится конфигурация 'doctrine' ... см. [ссылка на конфигурацию] (http://symfony.com/doc/current/reference/configuration/doctrine.html). Просто мои маленькие центы «* man *» :) – nifr