لقد تم التخلي عن هذه الحزمة
تعد مكونات العرض طريقة للمساعدة في تنظيم المنطق المرتبط بالعرض، على غرار عرض الملحنين.
namespace App Http ViewComponents ;
use Illuminate Http Request ;
use Illuminate Contracts Support Htmlable ;
class NavigationComponent implements Htmlable
{
/** IlluminateHttpRequest */
private $ request ;
/** @var string */
private $ backgroundColor ;
public function __construct ( Request $ request , string $ backgroundColor )
{
$ this -> request = $ request ;
$ this -> backgroundColor = $ backgroundColor ;
}
public function toHtml (): string
{
return view ( ' components.navigation ' , [
' activeUrl ' => $ this -> request -> url (),
' backgroundColor ' => $ this -> backgroundColor ,
]);
}
}
@render ( ' navigationComponent ' , [ ' backgroundColor ' => ' black ' ] )
يمكن أن يكون مكون العرض أي شيء ينفذ عقد Htmlable
الخاص بـ Laravel، لذلك لا تحتاج بالضرورة إلى استخدام عروض Blade لعرض المكون. يعد هذا مفيدًا لتغليف حزم HTML الخاصة بطرف ثالث، مثل قائمة spatie/laravel.
namespace App Http ViewComponents ;
use Illuminate Contracts Support Htmlable ;
use Illuminate Contracts Auth Guard ;
use Spatie Menu Laravel Menu ;
class MainMenuComponent implements Htmlable
{
/** @var IlluminateContractsAuthGuard */
private $ guard ;
/** @var string */
private $ class ;
public function __construct ( Guard $ guard , string $ class = null )
{
$ this -> guard = $ guard ;
$ this -> class = $ class ;
}
public function toHtml (): string
{
$ menu = Menu:: new ()
-> addClass ( $ this -> class )
-> url ( ' / ' , ' Home ' )
-> url ( ' /projects ' , ' Projects ' );
if ( $ this -> guard -> check ()) {
$ menu -> url ( ' /admin ' , ' Adminland ' );
}
return $ menu ;
}
}
@render ( ' mainMenuComponent ' , [ ' class ' => ' background-green ' ] )
تتمثل الفائدة من مؤلفي العرض في أن البيانات ومنطق العرض مرتبطان بشكل واضح معًا في المكونات بدلاً من ربطهما فيما بعد. كما أنها تسمح لك بالدمج بسلاسة بين الخصائص وحقن التبعية.
تعتمد هذه الحزمة على تقديم View Components في Laravel، وهو بديل لـ View Composers بواسطة Jeff Ochoa.
نحن نستثمر الكثير من الموارد في إنشاء أفضل الحزم مفتوحة المصدر في فئتها. يمكنك دعمنا عن طريق شراء أحد منتجاتنا المدفوعة.
نحن نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها. ستجد عنواننا على صفحة الاتصال لدينا. ننشر جميع البطاقات البريدية المستلمة على جدار البطاقات البريدية الافتراضية لدينا.
يمكنك تثبيت الحزمة عبر الملحن:
composer require spatie/laravel-view-components
لا يلزم إعداد إضافي. سوف يكتشف Laravel مقدم الخدمة ويسجله تلقائيًا.
اختياريًا، يمكنك نشر ملف التكوين باستخدام:
php artisan vendor:publish --provider= " SpatieViewComponentsViewComponentsServiceProvider " --tag= " config "
هذا هو المحتوى الافتراضي للملف الذي سيتم نشره على config/view-components
:
return [
/*
* The root namespace where components reside. Components can be referenced
* with camelCase & dot notation.
*
* Example: 'root_namespace' => AppHttpViewComponents::class
*
* `@render('myComponent')
* => `AppHttpViewComponentsMyComponent`
*/
' root_namespace ' => ' AppHttpViewComponents ' ,
/*
* Register alternative namespaces here, similar to custom view paths.
*
* Example: 'navigation' => AppServicesNavigation::class,
*
* `@render('navigation::mainMenu')`
* => `AppServicesNavigationMainMenu`
*/
' namespaces ' => [
// 'navigation' => AppServicesNavigation::class,
],
];
@render
يقبل توجيه @render
Blade وسيطتين: الأولى هي مسار مكون العرض أو اسم الفئة، والثانية هي مجموعة إضافية من الخصائص (اختياري).
يمكنك الاختيار بين الرجوع إلى المكون عبر مسار أو اسم فئة.
@render ( ' myComponent ' )
@render ( App Http ViewComponents MyComponent :: class )
سيتم إدخال المعلمات في طريقة عرض المكونات __construct
. يتم إنشاء مثيل للمكون باستخدام حاوية Laravel، لذلك سيتم تلقائيًا حقن المعلمات التي لم يتم توفيرها بواسطة التصيير.
use Illuminate Http Request ;
class MyComponent implements Htmlable
{
public function __construct ( Request $ request , string $ color )
{
$ this -> request = $ request ;
$ this -> color = $ color ;
}
// ...
}
@render ( ' myComponent ' , [ ' color ' => ' red ' ] )
في المثال أعلاه، تم تعيين $color
بشكل صريح، وسيتم حقن كائن $request
بواسطة Laravel.
من خلال تكوين root_namespace
، يمكنك تحديد مكان وجود الجزء الأكبر من مكونات العرض الخاصة بك. بشكل افتراضي، يكون هذا في AppHttpViewComponents
.
app/
Http/
ViewComponents/
MyComponent.php
Nested/
NestedComponent.php
يمكن تصيير المكونات المذكورة أعلاه باستخدام @render('myComponent')
و @render('nested.nestedComponent')
.
يمكنك تسجيل مساحات أسماء إضافية في تكوين namespaces
، على غرار عرض المسارات.
return [
' namespaces ' => [
' navigation ' => App Services Navigation::class,
],
];
app/
Services/
Navigation/
Menu.php
يمكن الآن عرض مكون Menu
أعلاه باستخدام @render('navigation::menu')
.
composer test
الرجاء مراجعة سجل التغيير للحصول على مزيد من المعلومات حول ما تغير مؤخرًا.
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
إذا اكتشفت أي مشكلات متعلقة بالأمان، فيرجى إرسال بريد إلكتروني إلى [email protected] بدلاً من استخدام أداة تعقب المشكلات.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.