Amir Alsaeed
الأعضاء-
المساهمات
166 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Amir Alsaeed
-
أرغب في وضع مجموعة من البيانات بحيث تتمكن جميع ال views ضمن المشروع الوصول إليها، وعند بحثي على الانترنت توصلّت إلى الكود التالي من الممكن أن يفيدني: View::share('data', [1, 2, 3]); ولكن كيف يمكنني استخدامه؟ وهل يوجد طريقة أخرى لمشاركة البيانات في لارافيل؟
-
بعد إنشاء مشروع جديد في لارافيل ظهر لدي الخطأ التالي: Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423 حاولت تغيير الصلاحيات على المجلّد بهذا الشكل: chmod -R 775 storage ولكن لم استطع حل المشكلة، ماهو الحل؟
-
أحاول إظهار بعض المعلومات عن لارافيل في موقعي، وأريد طباعة ما يكافئ الاستعلام الذي يتم استخدام Eloquent فيه إلى استعلام SQL، فلدي الاستعلام التالي: DB::table('users')->get(); كيف يمكنني استخراج الاستعلام الذي أقوم به عن طريق Eloquent لسلسلة نصية؟ أي طباعة التالي بدلاً من نتيجة الاستعلام: SELECT * FROM users
-
أحاول إظهار رسائل خطأ للمستخدم عند إدخال قيم باستخدام التحقق validation في لارافيل، لقد قمت بإضافة الكود التالي في المتحكم: public function saveUser(Request $request){ $this->validate($request,[ 'name' => 'required|max:120', 'email' => 'required|email|unique:users', 'phone' => 'required|min:11|numeric', ]); $user = new User(); $user->name= $request->Input(['name']); $user->email= $request->Input(['email']); $user->phone= $request->Input(['phone']); $user->save(); return redirect('success'); } وهذا هو الجزء الخاص برسائل الخطأ: @if(count($errors) > 0) <div class="row"> <div class="col-md-4 col-md-offset-4 error"> <ul> @foreach($errors->all() as $error) <li>{{$error}}</li> @endforeach </ul> </div> </div> @endif @if(Session::has('message')) <div class="row"> <div class="col-md-4 col-md--offset-4 success"> {{Session::get('message')}} </div> </div> @endif ومسارات التوجيه لدي بهذا الشكل: Route::group(['middleware' => 'web'], function () { Route::get('/', function () { return view('index'); })->name('main'); Route::post('/saveUser',[ 'uses' => 'AppController@saveUser', 'as'=>'saveUser', ]); }); ولكن لا تظهر رسائل الخطأ أبداً. كيف يمكنني حل هذه المشكلة؟
-
أقوم بتحديث نسخة لارافيل قديمة، ولدي الكود التالي لتحويل الطلبات إلى HTTPS: App::before(function($request) { if( ! Request::secure()) { return Redirect::secure(Request::path()); } }); ما الإجراء الذي يمكنني إضافته لتحويل الطلبات من http إلى https في لارافيل؟
-
أحاول حذف بعض البيانات من القاعدة عن طريق استخدام Ajax: @foreach($a as $lis) //some code <a href="#" class="delete" id="{{$lis['id']}}">Delete</a> //عند الضغط على هذا الزر ستجري عملية الحذف @endforeach والكود الخاص بالعملية: $('body').on('click', '.delete', function (e) { e.preventDefault(); if (confirm('Are you sure you want to Delete?')) { var id = $(this).attr('id'); $.ajax({ method: "POST", url: "{{url()}}/delete", }).done(function( msg ) { if(msg.error == 0){ //$('.sucess-status-update').html(msg.message); alert(msg.message); }else{ alert(msg.message); //$('.error-favourite-message').html(msg.message); } }); } else { return false; } }); وضمن المتحكم الخاص بالعملية قمت بكتابة: Test::with('hitsCount')->where('userid', $id)->get()->toArray(); ولكن يظهر لدي الخطأ: Laravel csrf token mismatch، كيف يمكنني حل المشكلة؟
- 2 اجابة
-
- 1
-
لدي جدولين في قاعدة البيانات المستخدم user و المنشور post، وكل مستخدم لديه مجموعة من posts. وقمت بتعريف العلاقة ضمن مودل المستخدم كالتالي: public function post(){ return $this->hasmany('post'); } وضمن post: public function user(){ return $this->belongsTo('user'); } والآن أرغب بدمج الجدولين السابقين وفقاً لعمود معيّن، فحاولت كتابة التابع التالي ضمن post لأحصل على بيانات المستخدم أيضاً: public function getAllPosts() { return Post::with('user')->get(); } ولكن نتيجة الاستعلام تكون بهذا الشكل: select * from `posts` select * from `users` where `users`.`id` in (<1>, <2>) ولكن لا أريد الحصول على كافة بيانات المستخدم، وإنما فقط بعض الحقول، مثال: select * from `posts` select id,username from `users` where `users`.`id` in (<1>, <2>) فكيف يمكنني استثناء باقي حقول الجدول والحصول فقط على أعمدة محددة من الاستعلام؟
-
لدي جدول للمستخدمين user وأرغب عند حذف مستخدم ما من الجدول: $user->delete(); أن يقوم تلقائياً بحذف الصور المرتبطة بهذا المستخدم مثلاً: $this->photo()->delete(); كيف يمكنني تنفيذ ذلك بشكل تلقائي دون الحاجة لكتابة العملية الثانية بشكل يدوي؟
-
لدي جدول في قاعدة البيانات: CREATE TABLE `about` ( `id` int(10) UNSIGNED NOT NULL, `title` varchar(500) COLLATE utf8_unicode_ci NOT NULL, `content` text COLLATE utf8_unicode_ci, ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci وأحاول تمرير البيانات إلى الوجهة عن طريق المتحكم الخاص بها: public function index() { $about = Page::where('page', 'about-me')->get(); //id = 3 return view('about', compact('about')); } ضمن blade: @section('title') {{$about->title}} @stop @section('content') {!! $about->content !!} @stop ولكن عند التوجه للصفحة يظهر لدي الخطأ التالي: Property [title] does not exist on this collection instance. ما الخطأ في ذلك؟
-
بعد أن قمت برفع مشروع لارافيل إلى خادم الويب، لاحظت أنه يمكن لأي مستخدم بسهولة الوصول إلى أي ملف موجود ضمن مجلّد المشروع مباشرةً عن طريق شريط العنوان. فلقد قمت بتجربة الرابط التالي على الموقع: http://example.com/composer.json واستطعت الوصول إلى محتويات الملف وهكذا لباقي الملفات. كيف يمكنني منع الوصول إلى هذه الملفات في لارافيل؟
- 2 اجابة
-
- 1
-
لدي سلسلة نصية أرغب باستخدامها في صفحة view على الشكل التالي: $text = '<p><strong>Welcome</strong> To the website <img src="images/welcome.jpg"></p>' وأحاول استخدام المتغيّر $text ضمن الصفحة بهذا الشكل: {{$text}} ولكن يتم تحويله إلى سلسلة نصية أي يتم تحليل HTML ويظهر بدون الوسوم أو الصفات أو الصفوف المستخدمة. كيف أستطيع استخدام المتغيّر كما هو ضمن الصفحة؟
- 2 اجابة
-
- 1
-
لدي مجموعة من صور الحسابات الشخصية التي تم تحميلها إلى مجلد storage في لارافيل. ولكن الخادم يقوم بتحويل جميع الروابط إلى المجلد public فكيف يمكنني الوصول إلى الصور والملفات المخزنة في المجلد storage بدلاً من ذلك وجعلها تظهر ضمن ال views؟
- 2 اجابة
-
- 1
-
لدي مشروع مبني بنسخة قديمة من لارافيل وعند محاولة إجراء التهجير يظهر لدي الخطأ التالي: Laravel requires the Mcrypt PHP extension. ولكنني قمت بتحميل الإضافة mcrypt وهي موجودة ضمن php.ini. فكيف يمكنني حل هذه المشكلة؟
- 2 اجابة
-
- 1
-
كيف يمكنني وضع أكثر من جملة شرطية where ضمن الاستعلام في Eloquent. فبفرض لدي المودل User وعند استعادة بعض السجلات أرغب بإضافة أكثر من جملة شرطية واحدة على الاستعلام: $results = User::where('this', '=', 1)-get(); أين يجب أن أقوم بإضافة الجمل الشرطية الأخرى في هذا الاستعلام؟
-
أرغب بإنشاء صف مساعد مخصص helper لتنسيق نص معيّن ولتجنب التكرار ضمن صفحات views، بحيث أستطيع تضمينه مثلاً في صفحات متعددة بالشكل التالي: <p>Text within helper class: {{ helperClass($text) }}</p> فأين يجب أن أقوم بتعريف التابع helperClass؟
- 2 اجابة
-
- 1
-
لقد قمت بإنشاء مشروع جديد على نسخة لارافيل 8، ولكن عن تعريف المتحكم يظهر لدي هذا الخطأ: Target class [Api\RegisterController] does not exist. وهذا هو الكود التجريبي الخاص بالمتحكم registerController <?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class RegisterController extends Controller { public function register(Request $request) { dd('aa'); } } ومع أنني قمت بتعريف المسار الخاص بالمتحكم ضمن ال api لدي: Route::get('register', 'Api\RegisterController@register'); فما هي المشكلة؟
-
كيف أستطيع تشغيل المشروع بلارافيل في حال كنت سأقوم بوضع الموقع على استضافة مشتركة؟ وبما أنه ليس لدي وصول إلى خادم الويب ولا أستطيع تشغيل الأوامر اللازمة. لقد حاولت تغيير المسار ليقوم بالقراءة من داخل ملف public وحاولت تعديل ملف .htaccess بالشكل التالي: <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> ولكن إما لا يظهر الموقع كلياً، أو أحصل على الخطأ التالي: NotFoundHttpException in compiled.php line 7610
- 3 اجابة
-
- 1
-
لقد قمت بإنشاء مشروع جديد لارافيل بنجاح، ولكن عند إنشاء اتصال عبر SSH لإجراء الأوامر الأساسية على قاعدة البيانات مثل التهجير أو البذر: php artisan migrate php artisan db:seed تظهر لدي رسالة الخطأ التالية: [PDOException] SQLSTATE[HY000] [2002] No such file or directory كيف يمكنني حل هذه المشكلة؟
-
أقوم باستخدام خادم ويب من نوع Apache، ولكن لا أستطيع تحديد ما هي الصلاحيات التي يجب إعطائها لمجلدات المشروع في لارافيل. على سبيل المثال وحسب التوثيق الرسمي، يحتاج storage لأن يكون قابل للكتابة. ولكن هل هنالك حاجة أيضاً لتعديل صلاحيات باقي المجلدات مثل vendor؟ وما هي أفضل طريقة يمكنني اتباعها في هذا الموضوع؟ هل أقوم بتغيير الصلاحيات على المجلدات أم صلاحيات المستخدم نفسه؟
-
أرغب في دمج أكثر من قاعدة بيانات في مشروع لارافيل، بحيث يمكنني الوصول إلى البيانات الموجودة في قاعدتين أو أكثر بدلاً من قاعدة بيانات واحدة فقط. فهل هنالك طريقة تمكنني من استخدام أكثر من قاعدة بيانات واحدة في لارافيل؟ وكيف يمكنني التبديل بين القاعدين ضمن المتحكمات controllers ؟
-
لقد حاولت إضافة مكتبة vuetify على مشروع laravel 8 استخدم فيه Jetstream و Inertia، وهذا هو ملف resource/plugins/vuetify.js الخاص بالإضافة: import Vue from 'vue' import Vuetify from 'vuetify/lib' Vue.use(Vuetify) const opts = {} export default new Vuetify(opts) وقمت بتضمينها ضمن ملف app.js: import PortalVue from 'portal-vue'; Vue.use(InertiaApp); Vue.use(InertiaForm); Vue.use(PortalVue); Vue.use(vuetify); const app = document.getElementById('app'); new Vue({ vuetify, render: (h) => h(InertiaApp, { props: { initialPage: JSON.parse(app.dataset.page), resolveComponent: (name) => require(`./Pages/${name}`).default, }, }), }).$mount(app); ولكنها مازالت لا تعمل. ما حل المشكلة؟
-
لقد قمت بجميع الخطوات من تحميل memcache ثم مودل memcache الخاص في php. وبعدها قمت بالتعديلات المطلوبة في config ضمن لارافيل. ولكن عند التوجه إلى artisan tinker ومحاولة إنشاء كاش لأي شيء يظهر مازال يظهر لدي الخطأ التالي: Fatal error: Class 'Memcached' not found in vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php on line 44 ولكن عند طباعة memcached-tool يظهر لدي نتائج: accepting_conns 1 auth_cmds 0 auth_errors 0 bytes 0 bytes_read 14 bytes_written 1096 cas_badval 0 cas_hits 0 cas_misses 0 cmd_flush 0 cmd_get 0 cmd_set 0 cmd_touch 0 كيف يمكنني حل المشكلة؟
- 1 جواب
-
- 1
-
بعد إضافة الشهادة على الخادم لم تعد تعمل الاتصالات عبر Socket.IO في لارافيل. لقد حاولت تغيير إعدادات Echo في لارافيل لتصبح: var echo = require('laravel-echo-server'); var options = { host: 'https://localhost', port: '6001', sslCertPath: '/etc/nginx/ssl/nginx.crt', sslKeyPath: '/etc/nginx/ssl/nginx.key' }; echo.run(options); ثم قمت بتغيير http إلى https ضمن Echo في الجافاسكريبت: import Echo from "laravel-echo" window.echo = new Echo({ broadcaster: 'socket.io', host: 'https://localhost:6001' }); ولكنها مازالت لا تعمل. ما هو حل هذه المشكلة؟
-
لدي تطبيق Angular يعمل بالتوازي مع Laravel من جهة الخادم، ولكن كل منهما على خادم ويب منفصل وخادم الويب الذي يحوي Angular يقوم بتزويد الواجهات الرسومية إلى تطبيقات Cordova. ولكن أواجه مشكلة CORS عند طلب البيانات من الخادم، حتى مع محاولتي لمعالجتها بقي الخطأ كما هو. وعند طلب البيانات أحصل على الخطأ التالي في console: No 'Access-Control-Allow-Origin' header is present on the requested resource ولكن عند تجربتي للطلب GET التالي يعمل ولا يظهر أي خطأ: Route::get('example', ['middleware' => 'cors', function(){ return Response::json(array('name' => 'Steve Jobs 1', 'company' => 'Apple')); }]); ولكن المسارات التالية التي تحتاج التحقق token-based هي التي تظهر الخطأ فقط: Route::group(['middleware' => 'cors'], function () { Route::group(['prefix' => 'api'], function() { Route::resources('authenticate', 'AuthenticateController', ['only' => ['index']]); Route::post('authenticate', 'AuthenticateController@authenticate'); }); }); وهذه هي إعدادات ال cors الخاصة بالتطبيق: class CORS { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { header("Access-Control-Allow-Origin: *"); $headers = [ 'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE', 'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin' ]; if($request->getMethod() == "OPTIONS") { // The client-side application can set only headers allowed in Access-Control-Allow-Headers return Response::make('OK', 200, $headers); } $response = $next($request); foreach($headers as $key => $value) $response->header($key, $value); return $response; return $next($request); } } فكيف يمكنني حل هذه المشكلة مع استخدام tokens مع خادم الويب الذي بضمنه Angular؟
-
لدي API مبنية ضمن لارافيل والتي يتم استدعائها من قبل سيرفر آخر خارجي عن طريق Guzzle، ولكن عند الوصول إلى IP السيرفر الآخر تظهر مشكلة Throttle ولايتمكن من إعادة البيانات المطلوبة من الـ API. الذي أحاول الآن القيام به هو تمرير اسم نطاق الزبون (السيرفر الأساسي) و IP Address للسيرفر الآخر إلى API عن طريق إضافة middleware للتحكم بالاختناق: /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'api' => [ 'throttle:60,1', \Barryvdh\Cors\HandleCors::class, 'bindings', ], ]; وهذا هو الكود الخاص بالدالة resolveRequestSignature: /** * Resolve request signature. * * @param \Illuminate\Http\Request $request * @return string * * @throws \RuntimeException */ protected function resolveRequestSignature($request) { if ($user = $request->user()) { return sha1($user->getAuthIdentifier()); } if ($route = $request->route()) { return sha1($route->getDomain().'|'.$request->ip()); } throw new RuntimeException('Unable to generate the request signature. Route unavailable.'); } ولكن النتيجة تكون دوماً بالحصول على Unable to generate the request signature. Route unavailable. ولم تنجح معالجة الاختناق. كيف يمكنني حل هذه المشكلة؟