Составные первичные ключи CakePHP

В версии 3.0 моего любимого фреймворка, кажется, появятся составные первичные ключи у моделей. Держим кулачки :)

Поля адреса при оформлении заказа Shop-Script 5

В летнем обновлении до версии Shop-Script 5.1.4 появилась очень полезная возможность спрашивать только те данные пользователя, которые действительно нужны для доставки. С этим обновлением процесс оформления заказа у этого движка стал лучшим среди тех движков, за которыми я наблюдаю.

Но для точной настройки необходимо изменить все модули доставки, используемые в конкретном магазине. Каждый модуль должен возвращать список полей, которые необходимы для доставки этим конкретным способом. Читать далее Поля адреса при оформлении заказа Shop-Script 5

Выбор лет

Понадобилось в одном проекте сделать выбор лет производства автомобиля. Ну, чтобы можно было указать, в какие годы он производился. Усугублялось это тем, что это необязательно должен быть непрерывный интервал. Решили сделать чекбоксами, но только этих самых чекбоксов уж больно много получалось.

В общем, решили расположить чекбоксы в таблице, сами чекбоксы скрыть, оставив только label. И у отмеченного чекбокса цвет фона лейбла менять. Заодно познакомился с AngularJS. Пришлось немного повозиться, чтобы изменения не сразу попадали в модель Angular, чтобы пощелкав по чекбоксам можно было спокойно нажать «Cancel».

Вот, что получилось. С помощью кнопки «New Usage» можно добавить модель автомобиля. Ссылка Delete сами понимаете, что делает (простите, подтверждения не спрашивает), про Edit тоже догадаетесь.

Внизу в отладочных целях содержимое модели.

Читать далее Выбор лет

CSS3 text-shadow

Поигрался немного с правилом text-shadow. На Internet Explorer работать, наверное, не будет. Но кого волнует чужое горе?

При радиусе размытия 0 делает просто внешнюю обводку. На Firefox 26, правда, при смещении на 1px по обеим осям углы не очень четко обозначает.

API Webasyst framework

Поскольку имеющаяся в наличии документация по фреймворку Webasyst подробностью не отличается, натравил на дистрибутив автоматический генератор документации. Пришлось, правда, перед этим немного подправить докблоки, чтобы более-менее по тематике все делилось.

Получилось вот такое описание API Webasyst Framework. Тоже не сахар. Обновляется с моего форка, могут быть небольшие отличия от оригинала.

Перебор записей БД по одной CakePHP 2.x

Тот редкий случай, когда не хочется выбирать все записи сразу, а есть желание выбирать по одной. Как в PHP с помощью mysql_query() / mysql_fetch_row().

В документации на Cake ничего похожего не описано, но возможность такая все-таки есть. По крайней мере в случае Mysql (и, видимо, других источников данных БД).

Модель CakePHP обращается к экземпляру класса Datasource для выборки данных, однако, на самом деле, это экземпляр класса DboSource, наследник Datasource. А у DboSource есть методы execute() и fetchRow(). Поэтому такая конструкция вполне работает:

Внутри модели, конечно, все тоже работает. Просто я из контроллера пробовал :) Как правильно, в соответствии с CakeWay, составлять строку запроса сами разберетесь, не новички.

mysqldump и AUTO_INCREMENT

Забавно, но mysqldump не может вывести структуру таблицы без того, чтобы не указать текущее значение AUTO_INCREMENT. Даже если не выводить данные, а только структуру.

Это помогает: