Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как я писал модуль


Recommended Posts

Всем привет из самоизоляции!

Я, если быть честным, не очень опытный программист. Ну, в том смысле, что начинал я еще в 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 - Все в порядке!
//
В общем, сейчас все работает, ну, я там, может, еще что-то дорихтую, поработаю надфилем, но, в общем, все пристойно. И я теперь довольно уверенно общаюсь с моделями, контроллерами и пр. механикой. Это тоже радует. 

 

Змінено користувачем LadaDed
  • +1 1
Надіслати
Поділитися на інших сайтах


24 minutes ago, PaulKravchenko said:

негусто.. хеллоу ворлд?))

НА этот форум войти сложнее, чем хакнуть пентагон! Я вошел, начал писать, и тут все само и отправилось, Поэтому получилось так забавно. 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.