Метод перезаписи в фильтре - PullRequest
0 голосов
/ 04 января 2012

В моей базе данных есть таблица Test со следующими полями:

 id | name
 1  | YW55IGNhcm5hbCBwbGVhcw==
 2  | fghfghgcm5hbCBwbGVhcw==

Имя хешируется с использованием base64. В моей модели я могу переписать этот метод:

public function getName() {
        return base64_decode($this->getName);
}

и в функции сохранения:

$this->setName(base64_encode($this->getName));

это работает нормально, но у меня большая проблема с фильтром в генераторе администратора. Если я ввожу для имени фильтра имя NAME, например, «stackoverflow», то это делает запрос с «stackoverflow» вместо base64_encode («stackoverflow»). Можно ли перезаписать это? Если да, то как?

Я использую Symfony 1.4 и Doctrine.

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Перегрузка doBuildQuery в подклассе sfFormFilterDoctrine для этого поля, так что он запрашивает закодированное значение.

http://trac.symfony -project.org / браузер / филиалы / 1.4 / Библиотека / модули / sfDoctrinePlugin / Библиотека / форма / sfFormFilterDoctrine.class.php # L148

РЕДАКТИРОВАТЬ: поочередно, вы можете перегрузить addTextQuery. В любом случае, объясните бизнес-логику ясно в комментарии

0 голосов
/ 04 января 2012

Попробуйте взглянуть на шифрование SHA1.Запрос будет выглядеть как SELECT * FROM Test WHERE name=SHA1(".$myNameFromAdmin.");

И еще один: вам не нужно public function getName() - это псевдоним для base64_decode ()

...