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

السؤال

Recommended Posts

  • 0
نشر

هل تعمل على إطار عمل لارافيل ؟ إذا كان كذلك هل يمكنك توضيح الطرق التي إستخدمتها ؟

يمكن تمرير البيانات من خلال الدالة view هكذا :

return view('greeting', ['name' => 'James']);

حيث أولا معامل للدالة هو إسم ملف ال blade الخاص بال view والمعامل الثاني هو مصفوفة تقوم بتمرير الإسم الذي ستستعمله والبيانات التي سيتم تمريرها لل view. 

  • 0
نشر
بتاريخ 17 دقائق مضت قال Hussein Al Dabwani:

 

هل يمكنك توضيح نظام الملفات لديك كيق تستخدم المتحكمات وملفات العرض ؟ هل تستخدم inclued أو require أم ماذا ؟

إذا كنت تستخدم include إذا يجب أن تكون البيانات معرفة قبل سطر include ليتم رؤيتها بداخل الملف الذي إستوردته.

  • 0
نشر

بما أن اطار PHP الذي تعمل به مخصص، فالعملية تعتمد بشكل أولي على بنية وتركيب الإطار ولكن عموما، الطريقة المعتمدة هي تعريف هاته المتغيرات بشكل عام global والوصول إليها من داخل ملف العرض. 
مثال: 

<?php 

$x = 10;

?>

<p>X value is: <?php echo $x; ?></p>
  • 0
نشر

بتضمين ملف View داخل دالة Controller، فالمتغيرات لا تنتقل تلقائيًا إلا إن قمت بإعداد ذلك، وأفضل طريقة في PHP هي استخدام دالة extract() لتحويل مصفوفة إلى متغيرات عادية.

فبدلاً من كتابة include في كل مرة، ستقوم بإنشاء دالة موحدة لطلب الـ View من خلال دالة مساعدة في ملف functions.php أو داخل كلاس الكونترولر الأساسي:


function view($viewPath, $data = []) {
    extract($data); 
    
    $fullPath = __DIR__ . "/views/" . $viewPath . ".php";
    
    if (file_exists($fullPath)) {
        require $fullPath;
    } else {
        die("View file not found: " . $viewPath);
    }
}

وفي الكونترولر HomeController.php مثلاً، ستقوم بتجهيز البيانات في مصفوفة وتمريرها:

class HomeController {
    public function index() {
        $pageTitle = "الصفحة الرئيسية";
        $users = ['أحمد', 'سارة', 'خالد'];

        view('home', [
            'title' => $pageTitle,
            'users_list' => $users
        ]);
    }
}

لاحظ كيف نمرر الاسم والقيمة.

ثم في ملف العرض home.php، ستجد المتغيرات جاهزة بنفس الأسماء التي وضعتها في مفاتيح المصفوفة ($title و $users_list):

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $title; ?></title>
</head>
<body>
    <h1>قائمة المستخدمين</h1>
    <ul>
        <?php foreach($users_list as $user): ?>
            <li><?php echo $user; ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

وآلية التحكم بالتوجيه تعتمد على جعل جميع الطلبات تمر عبر ملف واحد وهو index.php والذي يقرر أي Controller يتم تشغيله، وذلك الملف تضعه في مجلد المشروع الرئيسي.

وبه ستقوم سنقوم بقراءة الرابط واستدعاء الكلاس المناسب:

<?php

require_once 'functions.php'; // التي تحتوي على دالة view
require_once 'controllers/HomeController.php';

$request = $_SERVER['REQUEST_URI'];
$path = parse_url($request, PHP_URL_PATH);
$path = trim($path, '/');

switch ($path) {
    case '':
    case 'home':
        $controller = new HomeController();
        $controller->index();
        break;

    case 'about':
        echo "صفحة من نحن";
        break;

    default:
        http_response_code(404);
        echo "404 - الصفحة غير موجودة";
        break;
}

ولكي يعمل الكود أعلاه وتذهب كل الروابط إلى index.php، تحتاج لإنشاء ملف .htaccess بجانب index.php يحتوي على:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...