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

Abdelrahman Mostafa10

الأعضاء
  • المساهمات

    106
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Abdelrahman Mostafa10

  1. أعمل على مشروع حاليًا، واستخدم به وlocalStorage لكن في الشروحات أرى أحيانًا استخدام لـ sessionStorage وأحيانًا cookies فما الفرق ومتى استخدم كل منهم في المشروع، أنا أعلم التعريف الخاص بهم لكن الاستخدام ليس لدي دراية به ما الفائدة منهم ومتى لا ينصح باستخدامهم؟
  2. قمت بالبحث وتبين لي أنه لم يعد يتم دعم nodeIntegration بعد إصدار 12 من Electrone.js، لدي الكود التالي في ملف index.js: const electron = require("electron"); const Ffmpeg = require("fluent-ffmpeg"); const CmdExec = require('child_process'); const { app, BrowserWindow, ipcMain } = electron; function createWindow() { //If I put the main window ini into here, and then call app.on("ready", createWindow()); app says //"Cant create window before ready", even though I just moved the funcion from inside ready to here.. } app.on('ready', () => { mainWindow = new BrowserWindow({ webPreferences: { nodeIntegration: true } }); mainWindow.loadURL(`${__dirname}/index.html`); }); ipcMain.on("video:submit", (event, path) =>{ CmdExec.exec("echo hello", (value)=>{console.log(value)}); }); كيف أٌقوم بتحديث الكود ليتناسب مع أحدث إصدار من electron؟
  3. ما الفرق بين إرسال طلب حذف كالتالي: <a href="{{ route('users.destroy', $user) }}" class="btn btn-danger" onclick="return confirm('Remove user?')"> Delete user </a> وبين الطريقة الطريقة التالية: <form action="{{ route('users.destroy', $user) }}" method="POST" class="d-inline-block" onsubmit="return confirm('Remove user?')"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger"> Delete user </button> </a> وأيهما أفضل، وهل هناك موجهات أخرى في لارافل؟ ولا أعلم هل @method('DELETE') تابع للارافل أم ماذا؟
  4. React Router تقوم بتغيير عنوان URL ولكن لا يتم إعادة التصيير re-render للمكون. لقد بحثت بالفعل عن إجابة ولكن لم أجد حل للمشكلة لدي، استخدم إصدار 6 من react-router-dom. import React, { Component } from 'react'; import Header from './HeaderComponent'; import Footer from './FooterComponent'; import { Routes, Route, Redirect } from 'react-router-dom'; import Stafflist from './StaffComponent'; import {STAFFS} from '../shared/staffs'; import StaffDetail from './StaffDetailComponent'; class Main extends Component{ constructor(props){ super(props); this.state ={ staffs : STAFFS }; } render(){ const StaffWithId = ({match}) =>{ return( <StaffDetail staff={this.state.staffs.filter((staff) => staff.id === parseInt(match.params.staffId,10))}/> ) } return( <div> <Header/> <Routes> <Route exact path='/staff' element={<Stafflist staffs={this.state.staffs} />}/> <Route path='/staff/:staffId' element={StaffWithId}/> </Routes> <Footer/> </div> ); } } export default Main;
  5. أحاول استيراد صورة في Next.js ولكنها تظهر تالفة، ولا أفهم السبب. لدي المسار الصحيح للصورة ولكنها تظهر تالفة، وعند وضع المسار مباشرة في src='../pathimagepath/image.svg' يعمل بشكل جيد، ولكن عندما أقوم بتمريره باستخدام استيراد، لا يعمل. هذا هو الكود الخاص بي: "use client"; import React, { useState } from 'react'; import Logo from '../assets/Logo.svg'; import hamburgerBtn from '../assets/hamburgerBtn'; import '../app/globals.css'; function Navbar() { const [toggle, setToggle] = useState(false); const handleClick = () => setToggle(!toggle); return ( <div className='w-full h-[80px] bg-white'> <div className="2xl:max-w-[1400px] 2xl:px-[0] xl:max-w-[1180px] lg:max-w-[924px] md:max-w-[668px] sm:max-w-[540px] max-w-[460px] md:px-[0px] sm:px-[40px] px-[40px] m-auto w-full h-full flex justify-between items-center"> <img src={Logo} className='sm:h-[40px] h-[30px]' /> <div className="hidden md:flex items-center"> <ul className='flex gap-6'> <li>Home</li> <li>About</li> <li>Contact</li> </ul> </div> <div className='md:hidden' onClick={handleClick}> <img className="sm:h-[25px] h-[20px]" src={hamburgerBtn} /> </div> </div> </div> ) } export default Navbar; حاولت استيراد الصورة في مكون Logo.jsx ولكن لا تعمل، وأنا أحتاج استيراد كل شيء ككائن لأنني بحاجة إلى عمل toggle بين hamburgerBtn و closeBtn.
  6. هل فكرة وجود كل تلك المكونات جيدة؟ @foreach ($themes as $theme) <x-table.tr> <x-table.td>{{ $theme->name }}</x-table.td> <x-table.td class="flex justify-end items-center gap-4"> <x-link href="{{ route('themes.edit', compact('theme')) }}">Editer</x-link> <x-link-button @class([ 'text-red-500 hover:text-red-600' => auth()->user()->can('delete', $theme), 'text-slate-300' => auth()->user()->cannot('delete', $theme), ]) wire:click="destroy('{{ $theme->id }}')">Supprimer</x-link-button> </x-table.td> </x-table.tr> @endforeach أستخدم تلك المكونات لتجنب تكرار نفس كلاسات CSS عدة مرات، فهل يمكن أن تكون المكونات مسؤولة عن بعض البطء عند عرض الصفحة؟ هل سيكون من الأفضل إدارة الكلاسات عبر تكوين TailwindCSS وتطبيق كلاسات محددة على كل مكون جدول (table، tr، th، td، ...)، على سبيل المثال؟
  7. أعمل على مشروع بسيط to-do list app ولكن عند تغيير حالة المهمة إلى done من خلال التالي لم تتغير: <?php require "config.php"; if (!empty($_GET['$task_id'])) { $connection->query("UPDATE tasks SET done=1 WHERE id=".$_GET['task_id']." AND user_id=".$_SESSION['user_id'].""); } header ("location: ../index.php"); ?> أرفقت مجلد المشروع. to_do.rar
  8. إذا تم إدراج إدخال المستخدم بدون تعديل في استعلام SQL، يصبح التطبيق عرضة لحقن SQL، كما في المثال التالي: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); ذلك لأن المستخدم قد يدخل شيئًا مثل value'); DROP TABLE table;--، وبذلك يصبح الاستعلام كما يلي: INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--') ما الذي يمكن فعله لتجنب حدوث ذلك؟
  9. بعد تحديث إصدار PHP لدي في مشروع PHP من 7.4 إلى 8.0 حصلت على الخطأ التالي: package[1.0.0, ..., 1.4.0] requires php ^5.6.4 || ^7.0 -> your php version (8.0.3) does not satisfy that requirement. كيف يمكنني إصلاح ذلك الخطأ وما هي أسباب المشكلة؟
  10. قمت بإضافة حقلين مخصصين في نموذج تسجيل في WooCommerce ولكن أريد إخفائهم أو إظهارهم بناءًا على إختيار المستخدم في حقل reg_role وذلك هو الكود الخاص بي حيث حاولت تنفيذ ذلك من خلال PHP وjQuery: add_action('woocommerce_register_form_start', 'text_domain_woo_reg_form_fields'); function text_domain_woo_reg_form_fields() { ?> <p class="form-row form-row-first"> <label for="billing_company"><?php _e('Name Company', 'text_domain'); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_company" id="billing_company" value="<?php if (!empty($_POST['billing_company'])) esc_attr_e($_POST['billing_company']); ?>" /> </p> <p class="form-row form-row-last"> <label for="billing_product"><?php _e('Company Product', 'text_domain'); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_product" id="billing_product" value="<?php if (!empty($_POST['billing_product'])) esc_attr_e($_POST['billing_product']); ?>" /> </p> <div class="clear"></div> <?php } // هكذا حاولت إخفاء الحقول add_action( 'woocommerce_register_form', 'hide_show_field', 9999 ); function hide_show_field() { wc_enqueue_js( " $('#reg_role').keyup(function() { if ($(this).val().length == 'subscriber') { $('#billing_company').hide(); } else { $('#billing_product').hide(); } }); " ); } // إضافة حقل اختيار الدور add_action( 'woocommerce_register_form', 'wc_extra_registation_fields' ); function wc_extra_registation_fields() { ?> <p class="form-row form-row-first"> <label for="reg_role"><?php _e( 'Agent?', 'woocommerce' ); ?></label> <select class="input-text" name="role" id="reg_role"> <option <?php if ( ! empty( $_POST['role'] ) && $_POST['role'] == 'customer') esc_attr_e( 'selected' ); ?> value="customer">Client</option> <option <?php if ( ! empty( $_POST['role'] ) && $_POST['role'] == 'subscriber') esc_attr_e( 'selected' ); ?> value="subscriber">Agent</option> </select> </p> <?php }
  11. جميل شكرًا جزيلاً، ولكن أليس يجب استيراد الوحدات كما هي بنفس الاسم لماذا نستطيع تغييرها؟ ويظهر خطأ عند استخدام تلك الطريقة: import { Datepicker } from "react-tailwindcss-datepicker";
  12. ولكن ما زلت لم أفهم ما سبب المشكلة لماذا نستطيع كتابة اسمين مختلفين بينما يوجد في المستند الرسمي اسم واحد للمكتبتين
  13. حاليًا أواجه مشكلة محيرة قليلاً، استخدم مكتبة react-datepicker وreact-tailwindcss-datepicker لكن عند الاستيراد كالتالي: import DatePicker from "react-datepicker"; import Datepicker from "react-tailwindcss-datepicker"; يحدث مشكلة حيث أن الاستيراد الثاني يلغي الاستيراد الأول بطبيعة الحال، فكيف أقوم بحل تلك المشكلة؟ قمت بالاستيراد كما هو مشروح في المستند الرسمي لكل مكتبة. قم بتجربة الحل التالي لكن لم يجدي نفعًا: import Datepicker as TDatepicker from "react-tailwindcss-datepicker"; في حال توفير حال أرجو شرح الحل لكي أتمكن من فهمه.
  14. عند تشغيل مشروع React Native الخاص بي حصلت على الخطأ: Element type is invalid: expected a string (for built-in components) or a class/function but got: object لكن تفقدت المكون ويتم تصديره بشكل صحيح ودالة return صحيحة أي المكونات بداخل مكون واحد، فما المشكلة التي تمنع عرض ذلك المكون؟ import React, { useState, useEffect } from 'react'; import { ScrollView, KeyboardAvoidingView } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import axios from '../config/axios'; import { SIGNIN_URL } from '../config/urls'; import Input from '../components/Input'; import Button from '../components/Button'; import ScreenTitle from '../components/ScreenTitle'; import Loader from '../components/Loader'; import Alert from '../components/Alert'; import Container from '../components/Container'; import styles from './styles/authStyles'; function SignInScreen() { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [Loading, setLoading] = useState(false); const [Alert, setAlert] = useState({messages: null, type: ''}); useEffect(() => { const timer = setTimeout(() => { setAlert({ messages: null }); }, 3000); return () => clearTimeout(timer); }, [alert.messages]); const changeEmailHandler = (value) => { setEmail(value); } const changePasswordHandler = (value) => { setPassword(value); } const validate = () => { let validationErrors = []; let passed = true; if(!email) { validationErrors.push('الرجاء ادخال البريد الإلكتروني'); passed = false; } if(!password) { validationErrors.push('الرجاء ادخال الرقم السري'); passed = false; } if (validationErrors.length > 0) { setAlert({ messages: validationErrors, type: 'danger' }); } return passed; } _signIn = () => { (async() => { if(!validate()) return; setLoading(true); try{ const response = await axios.post(SIGNIN_URL, {email, password}); setLoading(false); setEmail(''); setPassword(''); AsyncStorage.setItem('accessToken', response.data.accessToken); }catch(e){ setLoading(false); setAlert({messages: e.response.data.messages, type: 'danger'}); } })(); } return( <Container> <Loader title="جاري إنشاء حساب جديد" loading={isLoading}/> <Alert messages={alert.messages} type={alert.type}/> <ScrollView contentContainerStyle = {{paddingVertical: 40}}> <KeyboardAvoidingView behavior='panding' enabled> <Input placeholder='البريد الإلكتروني' value={email} onChangeText={changeEmailHandler} /> <Input placeholder='الرقم السري' value={password} onChangeText={changePasswordHandler} secureTextEntry /> <Button text={دخول} onPress={_signIn}/> </KeyboardAvoidingView> </ScrollView> </Container> ) } export default SignInScreen; mobile.rar
  15. لم أتمكن من معرفة سبب حصول على الخطأ التالي: MongoDB connection error: Error: querySrv ENOTFOUND _mongodb._tcp.login.wuun2e8.mongodb.net أيضًا أحيانًا أحصل على الخطأ: querySrv ECONNREFUSED _mongodb._tcp.cluster0.abcde.mongodb.net ما المشكلة؟ وما هي الطريقة الصحيحة لاستخدام MonogoDB Atlas؟
  16. كما هو موضح في الوثائق، متاح إنشاء مكون في مسار مخصص، والذي يختلف عن المسارات الافتراضية views/livewire/ و Http/Livewire. من أجل تنظيم أفضل، قمت بإنشاء مجلدات فرعية من خلال التالي: php artisan make:livewire tutorial/counter وتم إنشاء ملفاتي في المسارات التالية: views/livewire/tutorial/counter.blade.php Http/Livewire/Tutorial/Counter.php لاختبار المكون في العرض، قمت بإنشاء ملف livewire/tutorial/welcome.blade.php الذي يحتوي على ما يلي: <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Livewire tutorial: counter</title> <!-- Fonts --> <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet"> <!-- Styles --> <style> /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}} </style> <style> body { font-family: 'Nunito'; } </style> @livewireStyles </head> <body class="antialiased"> <livewire:counter /> @livewireScripts </body> </html> لكن حصلت على الخطأ التالي: Livewire\Exceptions\ComponentNotFoundException Unable to find component: [counter] حاولت تنفيذ الحل التالي لكن دون جدوى: php artisan livewire:discover
  17. لدي الكود التالي في user model: public function validationRules(){ return [ 'name' => 'required', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:6', ]; } وذلك هو Patient model: public function validationRules(){ return [ 'first_name' => 'required', 'last_name' => 'required', 'address' => 'required', 'date_of_birth' => 'required', 'phone_no' => 'required', 'image' => 'required', 'medical_history' => 'required', 'sex' => 'required', 'blood_group' => 'required', ]; if($request->hasFile('image')) { $fileNameWithExt = $request->file('image')->getClientOriginalName(); $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME); $fileSize = $request->file('image')->getSize(); $fileExt = $request->file('image')->getClientOriginalExtension(); $fileNameNew = uniqid('', true) . time() . '.' . $fileExt; } } وذلك هو الكود في PatientController: public function edit(Patient $patient , User $user) { return view('Dashboard.default.patients.edit', compact('patient' , 'user' )); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Patient $patient * @return \Illuminate\Http\Response */ public function update(Request $request, User $user ,Patient $patient) { // User Validation $userValidData = $request->validate($user->validationRules()); // Patient Validation $patientValidData = $request->validate($patient->validationRules()); // save user data $userValidData['role_id'] = '10'; $user->save(); $patientValidData['user_id'] = $user->id; $patient->save(); $success = 'the patient has been updated successfully'; return redirect('/patients')->with('success', $success); }
  18. أثناء متابعتي لأحد الشروحات تم ذكر أنه يتم استخدام Dependency Injection و Route Model Binding في الجزء التالي من الكود: public function show(Project $project) { } كيف يتم التعرف على البروجكت بالرغم من قيامه بتمرير الـ id دون استخدام find() الأمر مربك بالنسبة لي، أرجو التوضيح مع الأمثلة ومتى يتم استخدام ذلك
  19. مؤخرًا تعاملت مع React Native ولكن واجهت صعوبة في إدراة إصدارات المكتبات والإعتماديات الخاصة بها والتوافقية، فالأمر يبدوا جحيم مُطبق لأي شخص مبتدأ في البرمجة ينوي تعلم تطوير التطبيقات من خلال React Native. هل الأمر مماثل في Flutter أيضًا؟ وأيًا من الإطارين أسهل في عملية التطوير وأفضل من حيث الأداء؟ ومن منهم أكثر طلبًا في سوق العمل؟
  20. أستلم خطأ "data and salt arguments required" في تطبيق Express/Node.js باستخدام PostgreSQL. أعتقد أن المشكلة في تمرير "password" بشكل صحيح من جهة العميل، لأن عندما أقوم بـ console.log(password)، يعيد قيمة undefined بالإضافة إلى الخطأ المذكور أعلاه، لست متأكدًا من كيفية حل المشكلة. هذا هو كود jwtAuth الخاص بي: const express = require("express"); const router = require("express").Router(); const bcrypt = require("bcrypt"); const pool = require("../../../db"); router.post("/register", async (req, res) => { try { // const {email, password, name1, name2} = req.body; const user = await pool.query("SELECT * FROM userr WHERE email = $1", [email]); if (user.rows.length !== 0) { return res.status(401).send("user already exists"); // this works } // trouble begins here //const saltRound = 10; var salt = await bcrypt.genSalt(10); var bcryptPassword = bcrypt.hashSync(password, salt); const newUser = await pool.query("INSERT INTO userr (lastName, firstName, email, passwrd) VALUES ($1, $2, $3, $4) RETURNING *", [name1, name2 , email, bcryptPassword]); res.json(newUser.rows[0]); // 5. generating jwt token } catch (err) { console.error(err.message); res.status(500).send("server error"); } }); module.exports = router;
  21. ذلك جزء من الكود لمشروع قمت بنشره على استضافة: public function storeVerify(array $data): SmsMessageRequest { $data["app_id"] = $app_id = request()->header('app_id'); $data["phones"] = $data["phone"] ? json_encode(array($data["phone"])) : "[]"; $data["priority"] = "high"; $data["type"] = "verify"; $data["message"] = $data["template"]; $item = new SmsMessageRequest($data); $item->save(); return $item; } ويقوم الكود بترميز مصفوفة إلى JSON وتخزينها في قاعدة البيانات، ولكن أحصل على الخطأ: SQLSTATE[42000]: Syntax error or access violation: 3143 Invalid JSON path expression. The error is around character position 2. (SQL: insert into sms_message_requests (priority, gateway, app_id, phones, type, message, updated_at, created_at) values (high, panel, 0, ["239272044202"], verify, web-auto-beh-verify, 2023-12-21 14:13:43, 2023-12-21 14:13:43)) عندما أقوم بتسجيل البيانات json_encode(array($data["phone"]))، يظهر أن القيمة هي ["239272044202"] ويبدو أنها الطريقة الصحيحة، وإصدارات MySQL و PHP على الاستضافة هي نفسها.
  22. لدي مشروع واستخدم Bootstrap وقمت بالإعتماد على حقل التاريخ الخاص بـ HTML 5 التالي: <input type="date" id="start" name="reserveation" /> لكن أنا أريد مكتبة datetimepicker بحيث يدعم Bootstrap فكيف أقوم بتنفيذ ذلك؟ وأيضًا ما الفرق بين مكتبات datetimepicker التي تدعم Bootstrap والمكتبات التي لا تدعم ذلك ومثال على تلك المكتبات إن إمكن.
  23. دائمًا ما أرى الشروحات تتجه إلى استخدام EXPO حتى على الموقع الرسمي أرى طريقة إنشاء المشروع من خلال Expo، لكن لم أفهم ما الذي يقدم expo مقارنًة بإنشاء المشروع بدونه من خلال React Native CLI، وهل هناك إطار أفضل من Expo؟
  24. في تطبيق React Native الخاص بي، أريد إنشاء نسخة من Axios أي axios instance لإرسال headers إلى الخلفية باستخدام رمز token تم الحصول عليه من AsyncStorage. ولكن الـ Token() دائمًا ما يرجع كائنًا (Promise) بدلاً من الرمز الفعلي، وبالتالي فإن عنوان 'Authorization' يشبه [Object object]. import axios from 'react-native-axios' import AsyncStorage from "@react-native-community/async-storage" const Token = async () => { try { await AsyncStorage.getItem("token").then( token => token ); } catch (error) { return null; } } export default axios.create({ baseURL: 'http://192.168.1.100:8080/api', headers: { 'Authorization': 'Bearer '+ Token(), 'Content-Type': 'application/json' } }) كيف يمكنني الحصول على الرمز الفعلي واستخدامه في نسخة Axios؟
  25. أواجه مشكلة لا أفهم حتى كيفية البدء في إصلاحها، أقوم بتمرير حقل النموذج المسمى emailOrUsername، ثم استخدام استعلامات where وorWhere لفحص عمودين في جدول، ولكنني أحصل على خطأ يستخدم اسم حقل / معلمة الطلب كعمود غير موجود. الكود: public function login(Request $request) { $credentials = $request->validate([ 'emailOrUsername' => 'required', 'password' => 'required', ]); $user = User::where('email', $request-> emailOrUsername) ->orWhere('username', $request-> emailOrUsername) ->first(); echo($user); if ($user && Auth::attempt($credentials)) { $user = Auth::user(); $user->createToken('_token')->plainTextToken; return response()->json([ "message" => "Successfully logged in.", ], 200); } return response()->json([ "message" => "The provided credentials do not match our records." ], 404); } الخطأ: { "message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'emailOrUsername' in 'where clause' (Connection: mysql, SQL: select * from `users` where `emailOrUsername` = wuceruda limit 1)", "exception": "Illuminate\Database\QueryException" } ملحوظة: عندما أرسل قيمة emailOrUsername خاطئة (ليست مستخدم صالح) ، أحصل فعلاً على استجابة خطأ في بيانات الاعتماد الخاطئة. لدي الفعلي عمودين هما username و email في جدول المستخدمين.
×
×
  • أضف...