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

E.Nourddine

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

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

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

  • عدد الأيام التي تصدر بها

    18

كل منشورات العضو E.Nourddine

  1. من الأمور التي يعتمدها إطار العمل laravel توافق طرق إرسال http request مع المسارات routes المعيّنة في الملف الخاص بها، فمثلا في حالتك هذه أنت لا ترسل request Delete عن طريق استعمال الوسم <a>، بل يتوجب استعمل form وتضمين طريقة delete عند إرسال المعلومات حتى يتمكّن المسار من نقل الأمر إلى المتحكم Controller، وبطريقة أخرى الكود يجب أن يكون بالشكل التالي: <form method="POST" action="{{ url('cats/'.$cat->id.'/delete') }}"> {{ csrf_field() }} <input type="hidden" name="_method" value="DELETE"> <span class="glyphicon glyphicon-trash"></span> <button type="submit">Delete</button> </form>وللعلم فقط فـ استمارة form تدعم فقط POST و GET، بينما PUT وDELETE يمكن توظيفها بإضافة حقل ومخفي شرطَ أن يحمل اسم الوظيفة كما هو الشأن في المثال السابق: <input type="hidden" name="_method" value="DELETE">
  2. المشكل الأساسي هنا هو أن apach لا يتعرف على VirtualHost الجديد، بمعنى آخر يتوجب عليك إضافة مسار موقعك على الحاسوب ضمن لائحة virtualhosts، وذلك بتحرير ملف http.conf بهذا الشكل: # Your great site! <Directory "/Applications/XAMPP/xamppfiles/htdocs/wd"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>الآن يمكنك الولوج إلى رابط الموقع على السيرفر المحلي دون تكرار خطأ الانتقال إلى XAMPP ، لكن من الممكن أن يحدث خطأ أثناء قراءة ملف index الخاص بالموقع وذلك بسبب عدم وجود الصلاحيات الكافية لقراءته، أي أنه محمي من القراء والكتابة، حينئذ عليك بالأمر التالي: RewriteEngine On RewriteBase / RewriteRule ^.*$ public/index.php [NC,L]
  3. حقيقة الأمر لا يمكنك استعمال متغيرات Blade في ملف javascript مستقل عنه، لأن laravel وكباقي أطر العمل يمكّن المبرمج من تمرير البيانات إلى view/template ، أما ملفات Javascript الخارجية لا تتدخل في ذلك، لكن يمكنك استخدام <script> فهذا الوسم يضع لك إمكانية إدراج سكريبت javascript في ملف الواجهة وبالتالي يمكن استعمال مختلف المتغيرات الموجودة فيview، هكذا: {{-- هذا الكود مدرج ضمن ملف الواجهة., view.blade.php --}} <script type="text/javascript"> var locations = [ @foreach ($articles as $article) [ "{{ $article->lat }}", "{{ $article->lng }}" ], @endforeach ]; </script>وعادة ما يوضع هذا الوسم في بداية الملف حتى يأخذ بعين الاعتبار ما سيأتي بعده من شفرة برمجية، وأيضا يمكن وضع آخر وسم body.
  4. يمكنك استعمال DB::select لتمرير أمر sql والذي يمكنك من استخراج جميع أسماء الجداول الموجودة على قاعدة البيانات، ثم تستعمل حلقة التكرار Foreach لإظهارها ـ بهذا الشكل: $tables = DB::select('SHOW TABLES'); foreach($tables as $table) { echo $table->Tables_in_db_name; }كما يمكنك إضافة تعيين اسم قاعدة البيانات، في حال كنت قد غيرته، أو تعرف اسمها، وذلك باستعمال كلمة Like بهذا الشكل : $tables = DB::select("SHOW TABLES like 'abc%'"); foreach($tables as $table) { foreach($table as $key=>$value) echo $value; }
  5. كأي تطبيق ويب، افتحه على محرر نص كـ Sublime Text أو ++Notepad، لأنه في نهاية الأمر عبارة عن كود php و html، بالإضافة إلى مكتبة jquery وربما إطار العمل bootstrap، أي أنك ستجد نفسك أمام تقنيات يُجيدها كل مطور ويب. بالنسبة للتعديل على footer، إن كان الأمر يتعلق بالنسخة *Yii 1 عليك البحث في كود layout، في حالة كان قدم أُستخدم القالب الافتراضي، أي في المسار التالي: yourApp/protected/view/layouts/أما في حالة كان قد أُستعمل قالب آخر، يمكنك البحث في المسار: yourApp/theme/yourThemename/layouts/حيث يمثل yourThemename اسم القالب. في حال كان إطار العمل في نسخته الثانية (*yii 2)، ستجد القالب في الملف: yourApp/view/layouts
  6. جرّب الدالة Redirect: $this->redirect(Yii::app()->homeUrl); وإذا كنت تريد الانتقال للصفحة الرئيسية home page:$this->redirect("site/index"); أو:$this->owner->redirect(array("site/index")); المصدر
  7. يمكنك فعل هذا الأمر بالاستعانة بالدوال الحسابية -Arithmetic Operators -على لغة php ، $object = '<div class="row">'; // حلقات التكرار لإنشاء الجداول foreach($tables as $table): if($table['avail'] == 0) { $newObject = '<div class="col-sm-4"><div class="table full"><p> 0 seats are avaiable.</p></div></div>'; } else { $newObject = '<div class="col-sm-4"><div id="table_'. $table['id'] .'" class="table"><p>' . $table['avail'] . ' seats are avaiable.</p></div></div>'; } $i++;//انشاء متغير العداد if($i % 3 === 0) { // في حالة وصول العداد إلى 3 $newObject = $newObject . '</div><div class="row">'; } $object .= $newObject; endforeach; $object .= '</div>';
  8. سنستعمل دالة : explodeوالتي من شأنها أن تجعل من القيمة النصية للحقل، مصفوفة وذلك بإزالة الفواصل، ثم المرور على قيم المصفوفتين - لأن لدينا حقلين إثنين أي سينتج عنها مصفوفتين-، بواسطة حلقتي تكرار لكل منها مع إنجاز العمليات المذكورة في سؤالك، بهذا الشكل: $sum=0; $question=array(); $first=explode(',',$_POST['first']); $second=explode(',',$_POST['second']); for( $i=0; $i < count( $first ); $i++ ){ $row=array(); $tmp=array(); for( $j=0; $j < count( $second ); $j++ ){ $tmp[]='( '.$first[ $i ]. ' x '. $second[ $j ].' )'; $row[]=$first[ $i ] * $second[ $j ]; } $sum+=array_sum( $row ); $question[]=implode( ' + ', $tmp ); } echo 'The question is: [ ' . implode( ' ] + [ ', $question ).' ]<br />'; echo 'Total: '.$sum; على أن يتم إظهار القيمة المحصول عليها في متغير sum$ آخر الكود.
  9. تختلف الدالتين عن بعضها البعض، لكن للعلم فدالة: Auth::check()تقوم باستدعاء دالة: Auth::user()وتستعملها للتأكد من وجود المستخدم -User-،حيث أن Auth::check تُعيد لنا متغير من نوع boolean أي أنه يقبل إحدى القيمتين False أو True، وفي حالة Null فالمستخدم غير موجود - أي أنه لا يمتلك حساب على النظام -، وكما تبيّن الدالة check في الكود التالي: public function check() { return ! is_null($this->user()); }فهي تستعين بـ كلاس User للتأكد من وجود المستخدم.
  10. نعم، يمكن فعل ذلك، وذلك باستعمال الدالة case when والتي من شأنها التأكد من شرط معيّن، أو المرور على عدة شروط مرفقة بكود برمجي يفعّل إذا تحقق الشرط، وللتوضيح، أرفق هذا المثال للاستئناس به: CREATE FUNCTION myFunction(delivery_day INT(1),preferred INT(1)) RETURNS INT(2) BEGIN DECLARE shipping_cost INT(2) DEFAULT 0; CASE WHEN preferred = 1 THEN SET shipping_cost = 2; WHEN delivery_day = 1 THEN SET shipping_cost = 20; WHEN delivery_day = 2 THEN SET shipping_cost = 15; WHEN delivery_day = 3 THEN SET shipping_cost = 10; ELSE SET shipping_cost = 5; END CASE; RETURN shipping_cost; ENDحيث سيأخذ المتغير shipping_cost قيمة حسب الشرط case when. أما في حالة جملة الاستعلام الخاصة بك، ستكون على الشكل التالي: UPDATE personal SET name=?, gender=?, telp=?, address=?, date_deadline = case when ? is null then date_deadline else ? end WHERE id_personal = ? $stmt->bind_param('sssssss', $nm, $gd, $tl, $ar, $dt, $dt, $id);لاحظ : date_deadline = case when ? is null أي التحقق من أن المتغير date_deadline يحمل القيمة null، عندها سيتم تجاوز تغيير قيمته أثناء Update، ولن يتم تغييره. CASE When Syntax
  11. بعض الأمثلة : كما هو مبيّن في الأمثلة السابقة الحل الوحيد لاختيار المستخدم حلاً واحداً من بين عدّة اختيارات هو استعمال الوسم Select، والذي يمكنني كمبرمج من إدراج أي عدد من القيم التي أريد إظهارها، على أن يتمكن المستخدم من تعيين اختيار واحد فقط لا أكثر، مع تحديد قيمة افتراضية للوسم في حالة نسيان المستخدم أو تجاهله الاختيار. وهذا كود Html للوسم المذكور: <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select>حيث option تمثل وسم كل اختيار. HTML <select> Tag
  12. الشكل ككل لا بأس به، فقط بعض الملاحظات الضرورية في تجربة المستخدم والتي من شأنها تحسين منظر الحقول، وجعلها أفضل عند استعمال المستخدم لها، وأهم هذه الملاحظات اللون العام للجدول، أرى من الأفضل إرجاع الألوان إلى القيمة الافتراضية مع تغيير لون الحقل أثناء توفره على مؤشر الفأرةـ أي أثناء تحريره، حتى يتمكن المستخدم من معرفة الحقل المُحَرّر ولا يتيه في ازدحام الحقول، لأن الحقول كثيرة في حالتك هاته - وهذا ليس بالمشكل، فقط حتى يكون المستخدم أكثر تركيزا- وأقترح هذه الصورة للتوضيح: لاحظ الفرق قبل وبعد، تبدو الحقول أكثر وضوحاً من ذي قبل. وفي حالة كانت الحقول أقل من العدد السابق يمكنك الاستعانة بهذا التصميم:
  13. في أغلب المواقع التي تستعمل هذه الخاصية، أي خاصة التواصل مع الدعم الفني أو المحادثة الفورية، تضعها في أسفل الصفحة، وهذا الاختيار لم يأتي عشوائيا، حيث أن رأس الصفحة مخصص للشعار ومختلف أقسام الموقع، وقد جرت العادة أن نجد روابط الاتصال بالموقع وعناوين الشركة وكل المعلومات التي من شأنها أن تفيدنا بالاتصال بهم أسفلَ الصفحة، لذا أرى من الجيد اتباع ما اعتاد الناس عليه، حتى يسهل العثور على الزر. من جهة أخرى لا بأس من إدراج الزر في جميع الصفحات، شرط أن يكون في أسفل الصفحة، حتى لا يضايق باقي المستخدمين للموقع، أي أولئك الذين هم في غنىً عن استعماله مرحليا. بعض الصور التي تعزز فكرة وضع الزر أسفل الصفحة:
  14. الأمر ببساطة متعلق بطريقة إظهارك للوقت، أي أن ترفق الوقت مع مؤشر للمساء أو الصباح، AM أو PM، كهذه الصورة التي من الممكن تطوير شكل عرضها وجعلها أفضل، ولكن لتأخذ صورة حول ما أريد قوله: على أن تكون الدائرتين من نوع حقل radiobutton تتيح للمستخدم اختيار أحد الاختيارين. في الأخير فأنا أميل لاستعمال التوقيت ذو الشكل 00:00 نظراً لانتشاره واعتماده بشكل عالمي، وفي حين كنت مصرًا على AM و PM يبقى حل RadioButton هو الحل الأمثل في هذه الحالة.
  15. على برنامج Illustrator يمكنك التحكم في الزوايا الخارجية للشكل عن طريق نافذة Stroke من خلال القائمة : Window > Stroke أو: حيث يمكنك التحكم في كل جزئية من الزوايا الخارجية للشكل. كما يمكنك الوصول لنافذة Art Brush Options لاستعمال فرش وأشكال مختلفة . يمكن التوسع في الموضوع عبر : رابط فيديو
  16. قم بنسخ المستطيل وضع الشكل الثاني المُحصل عليه فوق المستطيل الأول. وبعد ذلك غيّر من حجم المستطيل الثاني قليلا -قم بتصغيره-. وغير من زواياه الخارجية لتأخذ الشكل الدائري. أعط للمستطيل الصغير اللون الفاتح، من بين اللون المتدرج الذي تريد. حدد الشكلين معًا، ثم ثم بدمجهما، من القائم Object > Blend ...>Make ستلاحظ ظهور تدرج اللون نحو الأمام. وفي حالة لم تحصل على تدرج لون أملس، يمكنك تغيير خصائصه من القائمة : Obkect > Blend ... >Blend Options اختر Smooth ِColor واضغط OK.
  17. لإنشاء طبقة تتميز بـ Grayscale على برنامج Photoshop، اتبع الخطوات التالية: من القائمة:Layer > Duplicate Layer > Hue/Saturation > DeSat ثم :Layer > Duplicate Layer > New Adjustment Layer > Hue/Saturation > DeSat > Merge Layer ولتخصيص وضبط المعايير أكثر -حسب الرغبة-:Layer > New Adjustment Layer > Black & White وبهذا الشكل تكون قد حصلت على طبقة بنمط grayscale على photoshop.
  18. نعم يمكنك فعل ذلك وذلك من خلال الذهاب إلى القائمة : Layer> New Layer Based Slice ثم إلى File>Save for web & Devices وعند الحفظ اختر "All Users Slices" إليك بعض المصادر : Saving layers as individual PNG files
  19. لا ليس بالضرورة وإن كان في جميع الدورات التدريبية ستجد المدرب يحث على هذا الأمر، لكن مسألة الدقة تعتمد بالأساس على أمرين اثنين، أولاهما هي طبيعة التصميم، أي في نهاية التصميم هل مصيره الطباعة أم فقط سينشر على الأنترنت كوثيقة إلكترونية (صورة، خلفية،...) أم سيطبع (بطاقة هوية،ملصق،فلاير..)، ففي الحالة الأولى تعتبر الدقة التي ينصح بها الخبراء في مجال التصميم هي 72dpi، بينما في التصاميم المخصصة للطباعة فتعتبر 300dpi الدقة المثالية لذلك، لكن في الحالة الثانية يعاني الأغلبية من ضعف وقدرة جهاز الحاسوب على تحمل واستيعاب الذاكرة لملف photoshop دقته 300dpi، وخاصة إذا كان الملف بمقاييس كبيرة، مما ينتج عنه بطء في الجهاز وعمل متقطع يدفع المصممين إلى تغيير الدقة نحو القيمة 150dpi، والتي تعتبر أقل جودة من 300 ولكنها تفي بالغرض.
  20. يلجأ عامة المصممين في تصاميمهم المخصصة للطباعة إلى ترك مسافة جانبية حول التصميم حتى لا تأتي عملية القص على محتوى التصميم، حيث تقدر المسافة المتروكة بين 3ملم و6ملم كأقصى مسافة، وهذه الأخيرة تأتي ضمن الجزء الجانبي من التصميم والذي لا يتوفر على أي نص أومعلومات ، وهذا مثال حقيقي لما أريد شرحه: حيث المسافة bleed هي المسافة المُهملة والتي من شأنها أن تُقص. وأيضا: وإذا ما أمعنت النظر في بعض علب الحليب أو العصير في الأسفل قد تجد علامات على شكل + أو دوائر صغيرة، هذه العلامات مخصصة لغرض معرفة حدود عملية القص، كهذه:
  21. من الصعب إدراج ثلاث صور مربعة الشكل على صفحة A4 دون أي نصوص، حيث أن النص بمكانه موازنة الصفحة وملء الفراغات المتواجدة بها، لكن يمكنك استعمال: على أن تكون المربعات متساوية المقاس في ما بينها. ويمكنك أيضا جعلها وسط الصفحة، مع إضافة أرقام بجانب كل صورة : وفي حالة كان هناك نص وصفي أو تعريفي بكل صورة، أقترح عليك هذه الوضعيات للصور مع النصوص: كما ترى شتان بين تلك التي تحتوي نص وتلك التي بدونه، حيث أن النص يمنح الوثيقة جمالية أكثر، وتظهر غير فارغة، عكس الصور لوحدها، لذا حاول إضافة بعض النصوص التوضيحية أو عناوين الصور.
  22. قد يختلف الرأي في هذه الحالة، ولكن أرى أن الأصوب هو وضع الزر أسفل الحقل، وهذا الرأي ليس لأن وضع الزر في وسط التطبيق قد يكسبه جمالية أو أي شيء من هذا القبيل، ولكن تخيل معي أن المستخدم سيدخل معلومات كثيرة في هذا الحقل، مما سيؤدي إلى ظهور أداة Scrollbar داخل الحقل، فهل من المنطقي بعد كتابة محتوى الحقل أن ينتقل المستخدم إلى الأعلى من أجل الانتقال إلى الصفحة التالية، أليس من الأفضل وضع الزر في أقرب مكان بالنسبة للحقل، أي أسفله تمامًا. لذا فأنا أفضل هذا التصميم:
  23. الأمر بطبيعة الحال رهين بك أنت، وسأعطيك نصيحة لو كنت في نفس الوضعية، حيث سأعتبر العامل المؤثر في قراري هو مدى احتياجي للمال، يعني إذا كان بإمكاني تجاوز الأمر واعتباره تجربة مفيدة سأستفيد منها فيما بعد في تقدير الوقت اللازم للعمل، وأيضا تفادي الانطباع السيئ من لدن العميل، لأنه سيعتبر الأمر سوء تقدير مني وقد يتجاوز الأمر ليظن أني لا أتقن العمل وهذا ما لا أريده لا أنا ولا أنت بطبيعة الحال. كما يمكن لعامل العلاقة بينك وبين العميل أن يلعب دوراً مهما أيضا، أي إن كان العميل يعرف مستواك في العمل وسبق لك التعامل معه وتربطك به علاقة وُد بجانب العمل، حينئذ لا أرى سببا في إخباره بالموضوع لأنه سيقدر الأمر ويعرض هو نفسه تعويضك عن الأيام الثلاث. لكن أترك الأمر لك لتقدير وضعيتك مع العميل، وهذا التقدير كفيل بأن يُرشدك نحو الاختيار الأصوب.
  24. عادة ما أفعل ذلك، حيث أضع مستطيل أبيض وأضع فيه رمز أو شكل لاعتماده كأيقونة، وهذا يتيح لي إمكانية وضع طبقة منفصلة وتحويلها لطبقة شفافة. ويمكن تغيير لون الخلفية إلى شفافة من خلال القائمة التالية: File -> Document Properties من خلال نافذة Page. وذلك حتى تستطيع استعمال أي شكل:
  25. من خلال تجربتي مع المواقع، وخصوصا المواقع التي تشهد إقبالاً شديدا من المستخدمين لاحظت ما يلي: تبدأ غالبية المواقع في أول الأمر باستعمال نصوص في قوائمها الموجودة على رأس الصفحة -Header-، حتى تتضح للمستخدم مهمة كل قائمة، وبعد مضي مدة ليست بالقصيرة، وبعد وتعود المستخدمين، يُغَير شكل القوائم بشكل لا يجعل المستخدم يشعر بتغيير كبير، على أن تكون الأيقونات الموضوعة في رأس الصفحة تتوفر على تلميح لوظيفتها، وذلك عبر إظهار نص عند مرور مؤشر الفأرة فوف كل الأيقونة. بهذا الشكل: لذا عليك اختيار استراتيجية تجعل المستخدم يفهم وظيفة كل أيقونة وبشكل تدريجي، حتى تضمن فاعلية موقعك، والإقبال على استخدامه بشكل أفضل.
×
×
  • أضف...