Всем привет из самоизоляции!
Я, если быть честным, не очень опытный программист. Ну, в том смысле, что начинал я еще в 90-е, причем язык программирования тогда выбирать не приходилось. Тебе давали допуск к машине на несколько часов, бывало, что и ночью. И там уже "умные люди" что-то установили, и этим и нужно пользоваться, Такие были правила.
Так что, приходилось или на кубейсике писать или квик-си - как получится.
На PHP я сейчас кое-что пописываю, но, в основном так.. что-то поправить, что-то слегка изменить не более того.
А тут - такая роскошь - самоизоляция! Сиди целыми днями, ваяй.
Давно хотел сделать сверку данных со сводкой поставщика. Они там присылают эти сводки в формате иксель, понятное дело. И мне, так уж и быть, удалось заставить их не набирать их каждый раз заново, а переписывать старые. Я не знаю, это только у меня такая проблема, или вообще, у всех? Некий системный конфликт большого и малого бизнеса. У них там работает куча народу. Сидит целый отдел "девочек" от 20 до 70 лет, которые занимаются делом! Они знают иксель, потому, что они все "программисты", и вот они целыми днями заполняют таблицы! Так и называется работа - заполняют таблицы! Т.е. утром заваривают чай, обсуждают хахалей, и начинают "руками" писать в икселе - название, количество, цена и т.д. При этом одну и ту же работу выполняют разные люди, это задумка начальства - взаимозаменяемость, к тому-же, и им разнообразие - чтобы с ума не сойти? (я думаю, что это невозможно, чтобы сойти, нужен ум ) Но, так или иначе, но один и тот же товар может иногда называться по-русски, иногда по-английски, иногда первое слово по-русски, второе нет и наоборот. А то еще для моего удобства в названии будет добавлена ширина, причем между первым названием и вторым. Например, "Линолеум Идилия (именно так, с ошибкой!) 4.0 Nova Таркетт --- new!!!" Последнее вот это "new!!!" меня просто вывело из себя, но мне объяснили, что это в переводе с английского означает "новинка". Я же, по их мнению, никакого языка, кроме матерного не знаю... куда мне с моим свиным рылом
В общем, я долго с ними бился, договорились, что они больше не будут переименовывать товары. А уж, как написано, так и будет написано. Пока работает.
//
И вот я решил установить библиотеку PHPEXcel и сделать себе модуль, чтобы можно было в 3 клика всю эту сводку сразу загрузить, сравнить с данными на сайте и все там исправить, если что изменилось.
Вначале я подумал, зачем не модуль? Я же могу и так все загрузить, Я же не на продажу это делаю, а для себя. Но тут дело такое -
Во-первых, у модуля есть эти модели Install - Uninstall, где можно создать таблицу в базе. Ее можно, конечно, и в модели самой проги сделать через drop table проверив exists а потом снова crate table - так даже лучше, потому, что мне-то каждый раз нужна чистая таблица. А у truncate нет if exist. Но это, вроде как, моветон. Не кашерно. Хотя, я. если честно, так и не понял, лучше это или нет?
А. во-вторых, у модуля есть сеттинги. А они мне, как оказалось, все-таки нужны. Как бы я хорошо не владел вопросом, но.. мало ли? А вдруг завтра что изменится? Например, наценка?
В общем, модуль, так модуль. С ocmod как положено, все такое. Опять же этот install.xml тоже нужен..
//
Все почему-то пишут, что нужно начинать с language. Я так и не понял, зачем? Ну, сами посудите. Я же не знаю с самого начала, что именно хочу показывать? ДА, да, да. я понимаю, что любая работа начинается с долгого думания о том, что я хочу получить? но это не для меня. У меня все не так. Я только в общих чертах знаю, что хочу, а то, что получится, я начинаю видеть только, когда начинаю делать. Наверное, это неправильно, но в моем возрасте уже перевоспитываться поздно.
Да и, в чем, собственно, проблема? Я же открываю сразу 4 файла в одном нотепаде++ - модель, контроллер, язык и твиг. Перейти мышкой и дописать переменную - плевое дело. Мне же не во двор с ведром выбегать за каждой строкой
Потом я столкнулся с проблемой названия функций. Это старая песня. В 90-е мы все мечтали уехать в США и тогда было прилично не писать по-русски, дескать, мы же все американцы! Привыкай к новому родному языку! Но уже тогда было понятно, что список зарезервированных слов, во-первых, очень большой, а, во-вторых, не все там указано. При этом такие приятные слова как list var direction trigger и пр. наверняка уже использованы, так что нужно создавать что-то химерное. А это раздражает. Поэтому уже тогда народ начал облегчать себе жизнь и писать peremennaya, svodka, vkluchka - ну да, неказисто, но зато понятно и точно не использовалось.
И вот я решил назвать функцию AddTable - снова наступил на те старые грабли. В результате получилось что-то жуткое. Все отработало, но моя вьюшка вылезла в видел кода, обернутого в <pre> ! Я же не пью! Откуда белая горячка? А вот.
После того, как я закоментил все! строки я понял, что в этой функции ничего, кроме имени нет, значит, оно и не работает. Изменил на Dobavit - пошло. Вот так, оказывается
//
Приятно пользоваться твигом. Причем можно же вызывать один и тот же контроллер после выполнения. например, сравнил цены - показал, что изменилось, потом update и снова тот же контроллер. Теперь 0 отличий, поэтому твиг радостно обработав {% if result %}, выдает alert-success - Все в порядке!
//
В общем, сейчас все работает, ну, я там, может, еще что-то дорихтую, поработаю надфилем, но, в общем, все пристойно. И я теперь довольно уверенно общаюсь с моделями, контроллерами и пр. механикой. Это тоже радует.