اذهب إلى المحتوى

السؤال

نشر (معدل)

لدي مجموعة من النطاقات الفرعية subdomains وفي كل نطاق فرعي لدي نفس المسارات تمامًا، وحاليًا أقوم بكتابة الكود بالشكل التالي:

Route::group(array('domain' => array('dashboard.example.com')), function()
{
    // ...
});

Route::group(array('domain' => array('dev.example.com')), function()
{
    // ...
});

في الكود السابق أقوم بكتابة نفس المسارات مرتين مما يجعل الكود مكررًا بدون فائدة.

هل توجد طريقة لتجميع النطاقات معًا في لارافيل Laravel بدلًا من تكرار الكود بالشكل التالي؟

Route::group(array('domain' => array('dev.example.com','dashboard.example.com')), function()
{
    // ...
});

 

تم التعديل في بواسطة Emad Saif

Recommended Posts

  • 1
نشر

السبب وراء هاته الفكرة ليس واضحا، ولكن كون المعامل الثاني الذي يستقبله التابع group عبارة عن شيفرة تنفذ executable فسيمكنك بنفس المنطق تحقيق ذلك عن طريق تعريف كامل مساراتك بشكل منفصل وحقنها كمعامل ثان في كل تعريف للنطاقين الفرعين، يكون ذلك كـ: 

$my_routes = function() {
    Route::get('/home', HomeController::class); 
    Route::get('/admin', AdminController::class);  
};

Route::group(array('domain' => 'app.example.com'), $my_routes);
Route::group(array('domain' => 'dashboard.example.com'), $my_routes);

 

  • 0
نشر

من خلال جلب اسم النطاق من خلال الدالة التالية 

$domain = request()->getHost();

و من ثم التحقق من وجود هذا النطاق في مصفوفة النطاقات كالتالي 

$domain = request()->getHost();

if(in_array($domain, $domains)){
	Route::group(['domain' => $domain], $definition);
}

يمكننا تجميع النطاقات المكررة بداخل group و بالتالي تكون دالة تجميع النطاقات كالتالي 

Route::macro("domain", function(array $domains, \Closure $definition) {
    $domain = request()->getHost();

    if(in_array($domain, $domains)){
        Route::group(['domain' => $domain], $definition);
    }
});

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...