Блог хеллоуворлдщика

Категория [Yii]


Кадрирование изображения до загрузки на сервер для Yii

Видел, да, есть. Что вы начали? Да, я видел, что есть готовые расширения на GitHub для Yii для кадрирования изображений, но меня они не устраивали во многом:

  1. Изображение необходимо загрузить на сервер.
  2. Лишний функционал.
  3. Слишком наворочено.

Сам по себе я человек любящий минимализм и суть. Например, если это машина, то она должна выполнять полностью свою функцию для перевозки своей задницы или чего-либо. Большее от неё не требуется. Спросите зачем мне моя иномарка? Чем отечественная не устраивает? Ответ прост: наши автомобили, по-моему мнению, выполняют свою функцию очень плохо за такие деньги.

И так, порыскав по GitHub я нашёл хорошую работу реализованную на jQuery от hongkhanh за что ему огромное спасибо! Его реализация на стороне клиента меня полностью устроила. Теперь, настала пора PHP. =)

Читать далее

Таймер для Yii

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

Сегодня я поделюсь обёрткой для FlipClock. Данная обёртка очень простая и которую может сделать каждый, т.к. ничего сверх-нового не добавлено. Но всё же, проще скачать и использовать, чем делать обёртку самому, когда она уже есть. Взять можно отсюда https://github.com/bupy7/yii-flipclock .

Читать далее

Используем cURL

Первая мысль, которая должна возникать у разработчика перед тем, как написать свой велосипед, это - посетить GitHub или PEAR, или Bitbucket. Скорее всего этот велосипед уже есть с разными вариациями колёс, педалей и т.д. Конечно, все мы любим писать своё, но обычно это нафиг не надо никому, а главное чтоб работало.

У меня была своя библа для работы с cURL, но она была очень простая и дописывать совсем лень. Я решил тупо взять уже чью-то и использовать.

Взять можно отсюдава https://github.com/hackerone/curl . Библиотека очень здоровская. Всем рекомендую. =)

Если нужна библа без привязки к Yii, то ещё вот эту рекомендую https://github.com/shuber/curl

Читать далее

Backend для веб-приложения на Yii

Много раз мне в сети попадаются такие вопросы, как разделить frontend часть от backend. С frontend вроде и так всё понятно, но как только вопрос доходит до создание backend, люди сразу начинают прислушиваться к тысячам советов о том, как же лучше всего разделить.

Существует не мало вариантов разделения, а так же не мало вариантов реализации backend'а. Самый популярный вариант, это создание backend модулем, и, по-моему мнению, самый лучший вариант. Почему - расскажу далее.

Читать далее

Транслит из кириллицы в латиницу

Я не думаю, что стоит писать что такое транслит, т.к. если вы попали на эту страницу, то скорее всего он вам необходим.

Есть множество транслитераций в сети, которыми можно воспользоваться, включая GitHub. Можно найти транслитер, можно написать самому, но многие программисты ленивы и зря велосипеды ни кто не изобретает. Я тоже код, который я предложу, нашёл в сети и доработал его убрав индусский код, но в итоге это получилась уже моя на 70% разработка.

Читать далее

Динамические поля

Как всегда, каждая моя статья бывает чем-то сподвигнута, а именно работой. Выполняя тот или иной проект у меня появляются статьи для моего блога. На этот раз мы заденем такую тему, как "динамические поля".

Когда в проекте потребовалось реализовать связь между атрибутами товаров и их параметрами, вольно невольно возникает в голове только одно - динамические поля. В Yii, насколько всем известно, явно для этих целей ничего нет. Можно поискать в интернете и набрести, например, на эту статью http://habrahabr.ru/post/181642/ . Метод хорош, но не очень. Во-первых, нам везде нужно писать свою валидацию. Во-вторых, здесь не используется модель для которой весь этот концерт был организован, тем самым мы лишаемся много и приходится придумывать велосипеды, как например "запоминания прерыдущих значений". В моём методе этих недостатков нет. Оговорюсь, что я рассматриваю работу с двумя таблицами, в первой хранятся атрибуты товара, во второй хрянятся параметры для каждого из атрибута. Для кого-то, возможно, будет тяжело понять что я сейчас сказал, но не огорчайтесь. На самом деле всё просто. Чтоб понять о чём я, вам нужно это увидить. Предлагаю посетить демо-сайт платформы для интернет-магазина http://eximuscommerce.com/demo . В панели управления есть те самые атрибуты и параметры. И нет, я не слизал оттуда свою статью. Там есть динамическип поля, но реализация совсем не такая.

Читать далее

Yii-Feedback. Простая форма обратной связи

Сейчас нельзя представить сайт без формы обратной связи. Это такая маленькая, но неотъемлемая деталь.

Чем же так она важна? Вопрос, действительно хороший, и чтоб на него ответить я предлагаю посмотреть внутрь себя: все мы ленивые, а лень - двигатель прогресса. Мало кто захочет открыть почтовый ящик чтоб отправить по указанному Email адресу сообщение. Ведь это нужно ввести адрес, залогинется, написать адрес получателя, тему и сообщение. "Ууу, да ну его нафиг", - подумает посетитель и ничего не отправит. Форма обратной связи служит как раз тем самым связующим звеном между пользователем и ленью. Тем самым, мы увеличиваем возможность отклика.

Читать далее

Ошибка при загрузке больших файлов превышающих upload_max_filesize в php.ini. Validate CSRF token

Столкнулся с этой неизлечимой из корня бедой и я тоже. В сети много костылей по решению данной проблемы. Самый популярный костыль это

отключить проверку CSRF при определенном route

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

Читать далее

Работа с несколькими моделями и отображение их в CGridView

Иногда, или даже, чаще всего возникает потребность использовать несколько моделей в CGridView. В сети есть не мало решений связанные с использованием нескольких моделей в CGridView. Есть хорошие и есть плохие. Я решил разобраться в этом вопросе. Мы рассмотрим чужие костыли, решение через behavior и мой костыль.

Читать далее

Дублирование запросов при использовании CJuiDialog

Понадобилось сегодня сделать мне изменения поля в CGridView используя модальное окно. И вроде бы и всё хорошо, но при N-ом количестве раз открытия и закрытия окна CJuiDialog происходит дублирование запросов. Т.е. если я хочу обновить запись, то посылаю запрос update?id=3, и потом решаю обновить ещё одну, и посылаю запрос update?id=6. В итоге предыдущие запросы тоже выполняются ещё раз! Получается каша. Далее стало ясно, что если именовать кнопку submit как 'submit_' . rand(), то никакого дублирования не происходит.

Читать далее