Amir Alsaeed نشر 19 مارس 2021 أرسل تقرير نشر 19 مارس 2021 أرغب في وضع مجموعة من البيانات بحيث تتمكن جميع ال views ضمن المشروع الوصول إليها، وعند بحثي على الانترنت توصلّت إلى الكود التالي من الممكن أن يفيدني: View::share('data', [1, 2, 3]); ولكن كيف يمكنني استخدامه؟ وهل يوجد طريقة أخرى لمشاركة البيانات في لارافيل؟ اقتباس
0 Sam Ahw نشر 19 مارس 2021 أرسل تقرير نشر 19 مارس 2021 يوجد عدّة طرق لمشاركة البيانات بين views في لارافيل: فيمكنك تنفيذ ذلك عن طريق استخدام متحكم رئيسي تضع فيه جميع البيانات أو العمليات العامة global التي ترغب بمشاركتها، ثم تستطيع الوصول إليها عن طريق باقي المتحكمات بالوراثة، كالتالي: class BaseController extends Controller { public function __construct() { /نضع البيانات التي نرغب بمشاركتها $user = User::all(); // نقوم باستخدام share View::share('user', $user); } } الطريقة الثانية هي باستخدام الفلاتر Filter، فيقوم لارافيل بتنفيذ الفلتر قبل الطلب request عن طريق App:before: App::before(function($request) { View::share('user', User::all()); }); أو يمكنك كتابة الفلتر الخاص بك أيضاً: Route::filter('user-filter', function() { View::share('user', User::all()); }); الطريقة الثالثة هي باستخدام وسيط middleware ووضعه في جميع المسارات التي ستتشارك البيانات كالتالي: Route::group(['middleware' => 'SomeMiddleware'], function(){ // نضع هنا المسارات ضمن مجموعة واحدة تتشارك البيانات }); class SomeMiddleware { public function handle($request) { \View::share('user', auth()->user()); } } وأخيراً، يمكنك أيضاً استخدام viewComposer في لارافيل، فنقوم بإنشاء مجلّد خاص ضمن المسار App\Http\ViewComposers، ونضيف على serviceProvider: namespace App\Providers; use Illuminate\Support\ServiceProvider; class ViewComposerServiceProvider extends ServiceProvider { public function boot() { view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer"); } } ثم نقوم بإضافة الصف TestViewComposer ضمن config/app.php: namespace App\Http\ViewComposers; use Illuminate\Contracts\View\View; class TestViewComposer { public function compose(View $view) { $view->with('ViewComposerTestVariable', "Calling with View Composer Provider"); } } وعندها يمكننا استدعاء البيانات بأي view كالتالي: {{$ViewComposerTestVariable}} اقتباس
0 بلال زيادة نشر 19 مارس 2021 أرسل تقرير نشر 19 مارس 2021 في ملف AppServiceProvider.php في مسار app\Providers يمكنك وضع التالي View::share('data', [1, 2, 3]); في دالة boot بحيث تصبح public function boot() { View::share('data', [1, 2, 3]); } الآن ستتم مشاركة هذه القيمة عبر جميع views ويمكنك الوصول إليها اقتباس
السؤال
Amir Alsaeed
أرغب في وضع مجموعة من البيانات بحيث تتمكن جميع ال views ضمن المشروع الوصول إليها، وعند بحثي على الانترنت توصلّت إلى الكود التالي من الممكن أن يفيدني:
View::share('data', [1, 2, 3]);
ولكن كيف يمكنني استخدامه؟ وهل يوجد طريقة أخرى لمشاركة البيانات في لارافيل؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.