פיתוח בקרי AJAX מקצועי עבור 1C-Bitrix D7

אתרים מודרניים דורשים אינטראקציות דינמיות ללא טעינת עמוד מלאה. הפתרון שלנו הוא פיתוח בקרי AJAX על גבי 1C-Bitrix D7. בקרים אלו מחליפים את הסקריפטים legacy `ajax.php`, ומביאים שקיפות, אבטחה ויכולת בדיקה. לצוות שלנו יש 10 שנות ניסיון בפיתוח Bitrix
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פיתוח בקרי AJAX מקצועי עבור 1C-Bitrix D7
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    805
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

אתרים מודרניים דורשים אינטראקציות דינמיות ללא טעינת עמוד מלאה. הפתרון שלנו הוא פיתוח בקרי AJAX על גבי 1C-Bitrix D7. בקרים אלו מחליפים סקריפטים legacy /ajax.php?action=load_more, ומביאים שקיפות, אבטחה ויכולת בדיקה. לצוות שלנו ניסיון של 10 שנים בפיתוח Bitrix, עם למעלה מ-50 פרויקטים מוצלחים שהועברו ל-D7. חיסכון בזמן ניפוי שגיאות מגיע ל-50%, ועלויות התמיכה יורדות ב-40%. לדוגמה, מעבר טיפוסי מפחית תקלות הקשורות ל-AJAX מ-10 ל-2 בחודש. לקוחות חוסכים בממוצע $3,000 בשנה על עלויות ניפוי שגיאות.

מה היתרונות בשימוש בבקרי AJAX?

בפיתוח חנות מקוונת, עולות פעמים רבות משימות: טעינת מוצרים ללא רענון, סינון קטלוג, סל דינמי. כל נקודת קצה כזו דורשת הרשאה, הגנת CSRF ופורמט תגובה סטנדרטי. ללא בקרי D7, כל מפתח כותב פתרון מאולתר משלו, מה שמוביל לכפילות קוד ולחורי אבטחה. בקרי D7 מספקים תבנית אחידה: ירושה מ-\Bitrix\Main\Engine\Controller, תיאור פעולה, הוספת פילטרים — ומקבלים נקודת קצה מוכנה עם בדיקות. זה מאיץ את הפיתוח ב-40% ומפחית באגים ב-30%.

בעיות שבקרי AJAX פותרים

סקריפט ajax.php מותאם אישית הוא ריכוז של סיכונים: אין בדיקת CSRF מרכזית, אין טיפול שגיאות סטנדרטי, קוד מפוזר בין קבצים. בקר D7 פותר את כל זה ישירות מהקופסה. הוא מבטיח אבטחת מידע באמצעות הרשאה מובנית והגנת CSRF. דוגמה לבקר פשוט להצגת רשימת מוצרים:

namespace MyVendor\Catalog\Controller; use Bitrix\Main\Engine\Controller; use Bitrix\Main\Engine\ActionFilter; class Product extends Controller { public function configureActions(): array { return [ 'getList' => [ 'prefilters' => [ new ActionFilter\Authentication(), // проверка авторизации new ActionFilter\Csrf(), // CSRF-токен ], ], ]; } public function getListAction(int $sectionId, int $page = 1): array { // Возвращаем массив — Битрикс сам обернёт в {"status":"success","data":{...}} return [ 'items' => $this->loadProducts($sectionId, $page), 'total' => $this->countProducts($sectionId), ]; } } 

המסגרת עוטפת אוטומטית את ערך ההחזרה במעטפת JSON namespace MyVendor\Catalog\Controller; use Bitrix\Main\Engine\Controller; use Bitrix\Main\Engine\ActionFilter; class Product extends Controller { public function configureActions(): array { return [ 'getList' => [ 'prefilters' => [ new ActionFilter\Authentication(), // проверка авторизации new ActionFilter\Csrf(), // CSRF-токен ], ], ]; } public function getListAction(int $sectionId, int $page = 1): array { // Возвращаем массив — Битрикс сам обернёт в {"status":"success","data":{...}} return [ 'items' => $this->loadProducts($sectionId, $page), 'total' => $this->countProducts($sectionId), ]; } } או {"status": "success", "data": {...}} כאשר נזרקת חריגה.

איך ליישם פילטרים מותאמים אישית?

הבקר תומך בשרשרת פילטרים לפני ואחרי ביצוע הפעולה. זה מקביל ל-middleware ב-Laravel. פילטרים מובנים פועלים בממוצע פי 2 מהר יותר מבדיקות מותאמות אישית מכיוון שהם מתבצעים ברמת הליבה. אנו מבטיחים שכל בקר עובר בדיקות אבטחה לפי תקני Bitrix.

פילטרים מקדימים סטנדרטיים:

  • {"status": "error", "errors": [...]} — דורש הרשאה
  • routes.php — בודק אסימון CSRF (// В .settings.php модуля или через метод Application::getInstance()->getRouter() \Bitrix\Main\Routing\RoutingConfigurator::registerRoutes(function($routes) { $routes->post('/api/catalog/product/get-list/', 'MyVendor\Catalog\Controller\Product::getListAction'); }); )
  • /bitrix/services/main/ajax.php?action=myvendor:catalog.product.getList — מגביל שיטות (GET/POST)
  • ActionFilter\Authentication — מגביל הקשר (web בלבד, REST בלבד, CLI בלבד)

פילטרים מותאמים אישית לאבטחה משופרת

נניח שאתם צריכים להגביל גישה למוצרים רק למשתמשים עם תפקיד מסוים. צרו מחלקת פילטר המרחיבה את ActionFilter\Csrf והזריקו אותה לשרשרת הפילטרים המקדימים. זה גמיש יותר מאשר בדיקת הרשאות בכל פעולה בנפרד.

// В .settings.php модуля или через метод Application::getInstance()->getRouter() \Bitrix\Main\Routing\RoutingConfigurator::registerRoutes(function($routes) { $routes->post('/api/catalog/product/get-list/', 'MyVendor\Catalog\Controller\Product::getListAction'); }); 

תהליך רישום הבקר

הבקר נרשם בקובץ הניתוב של המודול bitrix_sessid:

class ResourceAccessFilter extends \Bitrix\Main\Engine\ActionFilter\Base { public function onBeforeAction(Event $event): ?EventResult { $action = $event->getParameter('action'); $sectionId = $action->getController()->getRequest()->getPost('sectionId'); if (!SectionAccessChecker::canRead((int)$sectionId)) { $this->addError(new \Bitrix\Main\Error('Access denied', 403)); return new EventResult(EventResult::ERROR, null, null, $this); } return null; } } 

שיטה חלופית היא באמצעות מנגנון הרכיבים הסטנדרטי: הבקר נקרא דרך ActionFilter\HttpMethod.

טיפול בקבצים ונתונים מורכבים

הבקר מבצע deserialization אוטומטי של נתונים נכנסים. להעלאת קבצים — דרך ActionFilter\Scope, התוצאה היא אובייקט Base עם שיטות אימות סוג וגודל.

לחלוקה לעמודים, נעשה שימוש באובייקט המובנה class ResourceAccessFilter extends \Bitrix\Main\Engine\ActionFilter\Base { public function onBeforeAction(Event $event): ?EventResult { $action = $event->getParameter('action'); $sectionId = $action->getController()->getRequest()->getPost('sectionId'); if (!SectionAccessChecker::canRead((int)$sectionId)) { $this->addError(new \Bitrix\Main\Error('Access denied', 403)); return new EventResult(EventResult::ERROR, null, null, $this); } return null; } } :

public function getListAction(int $page): \Bitrix\Main\Engine\Response\DataType\Page { $pageSize = 20; $items = ProductTable::getList([ 'limit' => $pageSize, 'offset' => ($page - 1) * $pageSize, ])->fetchAll(); return new \Bitrix\Main\Engine\Response\DataType\Page('items', $items, fn() => ProductTable::getCount()); } 

יתרונות המעבר מ-ajax.php

המעבר לבקרי D7 מפחית את זמן ניפוי השגיאות ב-50%. במקום סקריפטים מפוזרים, מקבלים מחלקה אחת עם בדיקות. אחד הלקוחות שלנו הפחית תקלות הקשורות ל-AJAX מ-10 ל-2 בחודש לאחר המעבר. אנו עוזרים לבצע את המעבר בהדרגה, החל מנקודות הקצה העמוסות ביותר. הגנת CSRF מטופלת אוטומטית. בדיקות PHPUnit מבטיחות אמינות. בממוצע, המעבר מחזיר את עצמו תוך 6 חודשים, וחוסך $3,000 בשנה.

בדיקת בקרים ללא HTTP

בדיקת בקרי AJAX ללא HTTP אינה דורשת שרת אינטרנט. בצעו את השלבים הבאים:

  1. צרו מוק של אובייקט \Bitrix\Main\Engine\ActionFilter\Base.
  2. צרו מופע של הבקר עם המוק.
  3. קראו לשיטת onBeforeAction.
  4. אמתו את התגובה.

זה מאפשר כתיבת בדיקות יחידה לכל פעולה. אנו משתמשים בגישה זו בכל הפרויקטים ומבטיחים כיסוי בדיקות. למידע נוסף על PHPUnit.

מדריך מעבר שלב-אחר-שלב
  1. זיהוי כל נקודות הקצה המותאמות אישית של null.
  2. יצירת בקרי D7 עם פעולות מתאימות.
  3. רישום נתיבים והחלת פילטרים.
  4. עדכון קריאות הפרונטאנד לשימוש בנקודות קצה חדשות.
  5. הרצת בדיקות קיימות וביצוע בדיקות רגרסיה.
  6. הסרת קבצי EventResult::ERROR הישנים.

מה כלול בפיתוח turnkey

רכיב תיאור
עיצוב הגדרת נקודות קצה, סכמות נתונים, פילטרים
יישום תכנות בקרים עם פילטרים מותאמים אישית
אינטגרציה חיבור לרכיבים קיימים ול-1C
בדיקות PHPUnit, בדיקות עומס
תיעוד מפרט OpenAPI, readme למפתחים
העברה העברה הדרגתית מ-ajax.php legacy
תמיכה ייעוץ והתאמות לאחר מסירה

לוחות זמנים ועלות פיתוח

היקף תחום לוח זמנים עלות
בסיסי 5–10 נקודות קצה + פילטרים סטנדרטיים 1–2 שבועות $1,000
בינוני + פילטרים מותאמים אישית + העלאת קבצים + הגבלת קצב 3–4 שבועות $2,500
מורחב + versioning + תיעוד OpenAPI + בדיקות 5–7 שבועות $5,000

צרו קשר לייעוץ — נבחן את הפרויקט שלכם ונציע את הפתרון האופטימלי. בקרי ה-API Bitrix D7 שלנו מיועדים לחנויות מקוונות בעלות עומס גבוה. אנו מספקים גם אינטגרציית הרשאת בקרים Bitrix ישירות מהקופסה. הזמינו פיתוח בקרי AJAX והיפטרו מסקריפטים legacy.