NewVision WEB-development Team Blog

Archive for 'Грабли'

Регистр в объявлении action`а в roting.yml

Недавно столкнулись с проблемой в тесте.
В тесте с помощью sfBrowser (sfTestFunctional) запрашивали страничку, используя роут:
url_for(’@cart_clear’)
роут был объявлен следующим образом
routing.yml:
cart_clear:
  url: /cart/clear
  params: {module: cart, action: clearcart}

Doctrine DQL и его хитрый Limit-subquery-алгоритм

Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))

Symfony: Изменение прав (credentials) пользователя без релогина используя sfDoctrineGuardPlugin

Регистрируясь в нашей системе пользователь должен подтвердить свой email. Как только пользователь подтверждает свой email его с чистой совестью можно добавить в группу «client» и разрешить использовать все возможности нашей системы не требуя перелогиниться.
И вот вчера, решая эту простую задачу я столкнулся с очень любопытным явлением, о котором я бы хотел рассказать.

http input/output character conversion

Недавно решал проблему, ради которой пришлось вспоминать цепочку передачи данных по http протоколу от клиента к серверу и какие преобразования могут с ними происходить.
У нас есть некая клиент-серверная система. Упрощенно ее можно представить как пхп-скрипт, лежащий на сервере и пхп-скрипты, которые раскиданы по разным хостингам. Сервер методом POST шлет данные клиентам, те отрабатывают и возвращают [...]

Doctrine_Query::whereIn c пустым массивом в качестве параметра

Если в update присутствует условие whereIn с пустым массивом в качестве параметра, то оно не учитывается при запросе.
Например, функция активации пользователей:
public function activateUsers(array $user_ids)
{
  Doctrine_Query::create()
    ->update("User u")
    ->set("u.is_active", 1)
    ->whereIn("u.id" , $user_ids)
    ->execute();
}
Если вызвать эту функцию с пустым массивом $user_ids, то проапдейтятся все записи из таблицы пользоватей (т.е. им проставиться is_active [...]