-
المساهمات
88 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
2
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة Waleed Alfakiat
-
-
يمكنك مشاركة المشروع مع الأجهزة الأخرى بداخل الشبكة من خلال تشغيل الخادم وتعيين المُضيف
0.0.0.0
حتى يصبح الجهاز (خادم) ويتيح الوصول من خلال الأجهزة الأخرى
فنقوم بتنفيذ الأمر الخاص بتشغل الخادم في Laravel:
php artisan serve --host 0.0.0.0
بهذه الطريقة يمكننا الوصول إلى البرنامج من خلال الرابط (عنوان IP الخاص بالجهاز المشغل للبرنامج):
http://192.168.1.101:8000
حيث أن المنفذ 8000 هو الافتراضي عند تشغيل الخادم في Laravel, ولتغييره للوصول إلى البرنامج بشكل مباشر
نقوم بتغيير المنفذ إلى 80 وهو الإفتراضي في بروتوكول HTTP عن طريق تمرير قيمة المنفذ في أمر التشغيل:
php artisan serve --host 0.0.0.0 --port 80
ليصبح الرابط للوصول إلى البرنامج عن طريق عنوان IP الخاص المضيف داخل الشبكة مباشرة
http://192.168.1.101
- 1
-
مشروع Laravel الخاص بك لا يتحوي على مفتاح تشفير key لذلك يظهر هذا الخطأ, ولإنشاء مفتاح تشفير
ننفذ الأمر التالي:
php artisan key:generate
حيث يقوم بإنشاء مفتاح خاص بالبرنامج تلقائيًا
- 1
-
من خلال ملف
php.ini
( حيث يمكنك الوصول إليه من خلال خيار البحث في شريط المهام )
نقوم بالبحث في الملف عن خيار
max_execution_time
المسؤول عن المدة الزمنية المحددة لتنفيذ البرنامج, فنقوم بتغيير القيمة إلى الزمن المطلوب بالثواني (150 ثانية), هكذا:
;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 150 ^^^
ثم نقوم بحفظ التغييرات وإعادة تشغيل الخادم appache من خلال الأمر:
service apache2 restart
- 1
-
تدعم Laravel إنشاء استثناءات لـ CSRF Token عن طريق الملف
App\Http\Middleware\VerifyCsrfToken
فنقوم بإضافة المسارات التي نرغب باستثنائها بشكل مصفوفة بداخل المتغير
protected $except = [] //array.
فمثلًا لو أردنا إضافة استثناء للمسار
127.0.0.1/demo
يكون الاستثناء بهذا الشكل
protected $except = [ '/demo', ]
- 2
-
يمكنك إعداد هذا الخيار في ملف migration الخاص بتهجير البيانات الفرعية عن طريق القيد
->onDelete('cascade')
فنقوم بإضافة القيد على حقل foreign_key المرتبط بالنموذج الأساسي
... $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); ...
وهذا يعني حذف السجل الفرعي عند حذف السجل الرئيسي المرتبط به تلقائيًا
- 1
-
يمكنك استخدام الأسماء المستعارة في Laravel كما كنت تستخدمها في MySQL
باستخدام الكلمة المفتاحية
AS
فيصبح الاستدعاء كالتالي:
$users = DB::table('really_long_table_name AS t') ->select('t.id AS uid') ->get();
- 1
-
يتم تشفير كلمات السر في Laravel عن طريق الدالة
bcrypt();
ويتم تمرير كلمة المرور الغير مشفرة إليها وتعمل على تشفيرها وإعادتها بالشكل الجديد
$password = bcrypt('hsoub');
- 1
-
يتم تجهيز القالب الرئيسي ونسميه
layout.blade.php
ويكون محتواه:
<html> <html> @yield('content') </html>
بحيث أنّ
@yield('content') // هي الجزئية التي سيحل مكانها القالب الفرعي
والقالب الفرعي نسميه:
index.blade.php
ويحتوي على
@extends('layout') // -> 1 @section('content') // -> 2 <html here> // -> 3 @endsection
حيث أنّ:
1: استدعاء القالب الرئيسي
2: اسم الجزئية التي سيتم عرض القالب الفرعي بداخل القالب الرئيسي
3: محتوى القالب الفرعي
وفي المتحكم يتم استدعاء القالب الفرعي ليظهر بصورته النهائية:
return view('index');
- 1
-
يمكنك التحكم في بيانات الاتصال في قاعدة البيانات من خلال الدالة:
Config::set('key', 'value');
حيث يتم تعيين البيانات الجديدة من خلال تمريرها إلى الدالة كالتالي:
Config::set("database.connections.mysql", [ "host" => "new_host", "database" => "new_database", "username" => "new_username", "password" => "new_password" ]);
بعد ذلك يتم اجراء العمليات (إضافة, تعديل, حذف, قراءة) في قاعدة باستخدام الاتصال الجديد الذي تم تعيينه
- 1
-
تأكد من أنّ المشغل الخاص بقاعدة البيانات مفعّل
وذلك في ملف php.ini
;extension=php_pdo_mysql.dll ^
قم بمسح إشارة ";" الموجودة في بداية السطر لتفعيل المشغل
وإذا لم تعمل بالشكل الصحيح أو لم تجدها, فعليك تثبيت المكتبة عن طريق:
1- معرفة إصدار php الخاص لديك من خلال:
php -v
2- بعد ذلك قم بتحميل المكتبة الموافقة للإصدار (إحدى هذه المكتبات):
php 7.0 sudo apt-get install php7.0-mysql php 7.1 sudo apt-get install php7.1-mysql php 7.2 sudo apt-get install php7.2-mysql php 7.3 sudo apt-get install php7.3-mysql
3- ومن ثمّ إعادة تشغيل Xampp أو تنفيذ الأمر:
service apache2 restart
- 1
-
من خلال المتحكم, قم بتمرير قيم JSON التي تم تحويلها على شكل مصفوفة إلى view
return view('name')->with('leads', json_decode($leads, true));
وفي ملف blade نقوم بطباعة المصفوفة عن طريق foreach لقراءة كل قيمة لوحدها:
@foreach($leads['member'] as $member) Member ID: {{ $member['id'] }} Firstname: {{ $member['firstName'] }} Lastname: {{ $member['lastName'] }} Phone: {{ $member['phoneNumber'] }} Owner ID: {{ $member['owner']['id'] }} Firstname: {{ $member['owner']['firstName'] }} Lastname: {{ $member['owner']['lastName'] }} @endforeach
- 1
-
في Laravel يتم التحقق من checkbox باستخدام القاعدة:
accepted
بدلًا من:
required
فيصبح البرنامج:
return Validator::make($data, [ ... 'checkbox' =>'accepted', ]);
- 1
-
قم باستخدام هذه للطباعة:
{{ }}
فهي مخصصة لطباعة قيم المتغيرات بداخل ملفات blade مباشرة
فيصبح كالأتي:
{{ Request::segment(0) }}
- 1
-
للحصول على الأخطاء التي قد تحصل عند إضافة سجل جديد
نقوم بوضعها بداخل try & catch
حيث تقوم بالحصول على الأخطاء حين حدوثها
try{ $user = new User; $user->fields = $value; $user->save(); // true or false }catch(\Exception $e){ echo $e->getMessage(); // للحصول على معلومات الخطأ }
ومن خلالها يمكننا معرفة المعلومات المتعلقة بالخطأ من خلال
echo $e->getMessage();
- 2
-
ممكن ترفق لنا الكود الخاص بإنشاء الكائن من النموذج $pdf ؟
مثل:
pdf = new TCPDF();
- 1
-
من خلال Laravel يمكنك الحصول على جميع المدخلات من خلال الدالة:
Input::all();
ويمكنك إعادة التوجيه إلى الصفحة السابقة وتمرير القيم عن طريق:
return Redirect::back()->withInput($values);
فما علينا فعله هو إعادة التوجيه مع تمرير القيم التي حصلنا عليها كالآتي:
return Redirect::back()->withInput(Input::all());
- 1
-
في الإصدار الجديد من Laravel - 8
لا يتم تطبيق namespace للوصول إلى المتحكم بشكل مباشر, بل يجب استدعاؤه عن طريق كتابة المسار كاملًا, كالآتي:
Route::get('register', 'App\Http\Controllers\RegisterController@register');
أو أن تقوم بإضافة namespace يدويًا وذلك بإضافة مسار الكلاس في ملف الموجهات كالآتي:
use App\Http\Controllers\RegisterController; Route::get('/register', [RegisterController::class, 'register']);
- 1
-
سبب الرسالة هو أنّ MySQL يحاول الاتصال بالخادم عن طريق Socket وهذا غير مدعوم في الخادم الذي تم رفع النظام عليه,
فقم بتغيير بيئة العمل في Laravel عن طريق الأمر التالي:
php artisan migrate --env=production
وهنالك حل آخر:
وهو تغيير قيمة DB_HOST الخاصة بقاعدة البيانات في ملف .env من 'localhost' إلى '127.0.0.1'
... DB_HOST=127.0.0.1 ...
بسبب أنّ الخادم الاستضافة غير معرف على عنوان localhost ولذلك وجب تغييره إلى 127.0.0.1
- 1
-
تتم برمجة المواقع التفاعلية باستخدام مكتبات JavaScript للتفاعل مع المستخدم, بالإضافة للغات البرمجة Php, Python
وإذا أردت أحد المبرمجين لإنجاز المشروع, فيمكنك طلب مبرمج مستقل عن طريق
-
توفر لك Laravel إمكانية الحصول على جميع routes التي قمت بإنشائها عن طريق Route::getRoutes()
بحيث تقوم بإرجاع routes على شكل RouteCollection,
ومن خلال كل عنصر يمكنك قراءة المسار عن طريق $route->getPath()
فيصبح الشكل كالآتي:
$routes = Route::getRoutes(); foreach ($routes as $value) { echo $value->getPath(); }
- 1
-
قم بتعيين الخيارات الخاصة بالصورة كالآتي:
$pdf->Image($image_path, 50 , 10 , 100 , 20 , '', null, 'center'); ^^ ^^ ^^^ ^^ X Y W H
بحيث أنّ
X: أحداثيات الصورة (يمين - يسار)
Y: أحداثيات الصورة (أعلى - أسفل)
W: مقاس الصورة بالعرض
H: مقاس الصورة بالطول
- 1
-
ممكن تزودنا باسم المكتبة التي تقوم باستخدامها ؟
- 1
-
يمكنك إنشاء حقل جديد في جدول موجود من قبل عن طريق استخدام خيار –table الذي نمرر من خلاله اسم الجدول الموجود عند استخدام make:migration لإضافة الحقول الجديدة إليه
php artisan make:migration users_add_paid --table=users
وسيتم إنشاء ملف migration جديد باسم users_add_paid نقوم بداخله بإضافة الحقول التي تريدها في دالة up(), كالتالي:
public function up(){ Schema::table('users', function($table) { $table->integer('paid'); }); }
وفي دالة down() نقوم بإضافة الكود الخاص بحذف هذا الحقل عند عمل rollback
public function down() { Schema::table('users', function($table) { $table->dropColumn('paid'); }); }
وبعد تجهيز الحقول, نقوم بتشغيل migration لتطبيق التعديلات
php artisan migrate
- 1
-
يمكنك في Laravel إدراج عدة جداول بجملة واحدة, وذلك عن طريق تجميعهم في مصفوفة وتمريرها في النموذج الخاص بالجدول, كالتالي:
$data = [ ['user_id'=>'1', 'subject_id'=> 140], ['user_id'=>'2', 'subject_id'=> 270], ... ]; Model::insert($data);
وفي البرنامج الخاص بك, فإنّ البيانات فعليًا مخزنة في المتغير $query فنقوم مباشرة بإدراجها في قاعدة البيانات :
Model::insert($query);
- 2
إيقاف timestamps مؤقتا في Laravel
في أسئلة البرمجة
نشر · تم التعديل في بواسطة Alfakiat
يمكنك إيقافها بشكل مؤقت من خلال تعطيل قيمة المتغير timestamps
في النموذج المستخدم بعملية التعديل قبل القيام بحفظ التغييرات
ليصبح هكذا:
بهذه الطريقة, تم إيقاف timestamps مؤقتًا في هذا الكائن فقط