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

عرض نموذج عشوائي باستخدام Laravel

Mohammad Kiblawi

السؤال

السلام عليكم 

اريد عمل صفحة  نموذج متغير  مكون من 4 نماذج بشكل عشوائي مثل الفيديو الموجود في الاسفل (قمت بعمل 4 views)

حيث عند الضغط على الزر يتغير النموذج بشكل عشوائي 

ولا اريد ان استخدم الداتا بيس بها

فقط php 

 

لقد قمت بالتفكير بحل لها و رايت انني يكمنني ان امرر ال view ك parameter داخل ال controller index($view) حيث اعيد قيمة المتغير view$ 

و من ثم امررها في الملف web.php

هكذا 

Route::post('form/{view}')  

لكنني لا استطيع ان اطبقها 

ما هي الطريقة المناسبة 

Demo-Showing Form Randomly.mp4

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكن تطبيقها بالطريقة المذكورة وذلك عبر توليد رابط عشوائي من الخيارات المتاحة (اسماء ملفات العرض) عند إنشاء صفحة الزر وتحديد الرابط المختار كل مرة كرابط للزر نفسه

وتصيير النموذج الحالي ضمن ملف العرض الرئيسي كالتالي:

<?php
// HTTP/Controllers/FormsController.php

 public function index($view) {
   
   $forms = [...]; // أسماء النماذج المتاحة
   $next_form_name = $forms[array_rand($forms)]; // اختيار نموذج عشوائي
   
   $current_form = view($view); // النموذج الحالي
   
   // نمرر النموذج الحالي واسم النموذج التالي
   return view('forms.blad.php', compact('current_form', 'next_form_name'));
 }

ملف العرض الرئيسي

<?php
// forms.blad.php

// رابط للنموذج التالي
<a href='/form/{{ $next_form_name }}'> ... </a>
 
// تصيير النموذج الحالي
{{ $current_form }}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 11 ساعات قال Hassan Hedr:

يمكن تطبيقها بالطريقة المذكورة وذلك عبر توليد رابط عشوائي من الخيارات المتاحة (اسماء ملفات العرض) عند إنشاء صفحة الزر وتحديد الرابط المختار كل مرة كرابط للزر نفسه

وتصيير النموذج الحالي ضمن ملف العرض الرئيسي كالتالي:


<?php
// HTTP/Controllers/FormsController.php

 public function index($view) {
   
   $forms = [...]; // أسماء النماذج المتاحة
   $next_form_name = $forms[array_rand($forms)]; // اختيار نموذج عشوائي
   
   $current_form = view($view); // النموذج الحالي
   
   // نمرر النموذج الحالي واسم النموذج التالي
   return view('forms.blad.php', compact('current_form', 'next_form_name'));
 }

ملف العرض الرئيسي


<?php
// forms.blad.php

// رابط للنموذج التالي
<a href='/form/{{ $next_form_name }}'> ... </a>
 
// تصيير النموذج الحالي
{{ $current_form }}

 

السلام عليكم و رحمة الله و بركاته 

مشكور اخي بالله 

لكن لم تعمل عندي هل يمكنك مساعدتي؟؟

 

practice.zip

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 12 ساعات قال Mohammad Kiblawi:

مشكور اخي بالله 

لكن لم تعمل عندي هل يمكنك مساعدتي؟؟

يمكنك حذف المسار form/ والذي يشير للدالة index ضمن المتحكم، يكفي الاعتماد على مسار واحد، أولا حاول جعل المتغير ضمن المسار إختياري لتخديم أول عرض للصفحة كالتالي:

Route::get('form/{view?}', [Formcontroller::class, 'showForm']);

وفي دالة المتحكم تقوم إما بعرض النموذج المختار عبر المعامل أو تختار نموذج عشوائي، مع اختيار اسم لنموذج عشوائي آخر حالي كالتالي:

public function showForm($view = null)
  {
  $forms = [
    'forms.formA',
    'forms.formB',
    'forms.formC',
    'forms.formD'
  ];

  $next_form_name = $forms[array_rand($forms)];
  $current_form = view($view ?? $forms[array_rand($forms)]);
  return view('form', compact('current_form', 'next_form_name'));
}

وضمن ملف العرض form يجب عرض المحتوى current_form بشكل حرفي حتى يتم إظهار النموذج بشكل سليم كالتالي:

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-lg-6">
            <div>
                Click here to show a random form
            </div>
            <a class="btn btn-primary text-center" href="/form/{{$next_form_name}}"> Submit</a>
        </div>

        <div class="col-lg-6">
            {!! $current_form !!}
        </div>
    </div>
</div>
@endsection

ويجب تعديل كل ملفات عرض النماذج وإزالة القالب الرئيسي منها layouts.app حتى لا يتم تكرار الشريط العلوي

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...