لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
كيف يتم عمل نظام قواعد عن طريق البينات مع اسمارتى
السلام عليكم
إخواني ممكن طريقة عمل نظام قوالب عن طريق قواعد بينات مع اسمارتى
إمتداد الملفات هو
tpl
تاريخ البداية: 21 / سبتمبر / 2011 الساعة 12:45 اخر نشاط: 21 / سبتمبر / 2011 الساعة 12:45 سمارتى قالب قاعدة بينات
1 إجابة
انت الان تريد ان يكون مصدر القوالب هو قاعدة البينات؟
اذا كان الاجابة نعم فهذا الشرح سوف يفيدك
اولا الاسمارتى متميز جدا وقد قام بعمل ذلك وهو تعدد المصادر
وقد قام بعمل بعض الدوال التى يجب ان تعتمد عليها فى اى مصدر
او بمعنى اصح عشان تعمل كدة لازم تعمل 4 دوال 2 اساسين و2 يعنى للامان
الدوال هى
  • smarty_resource_name_source
  • smarty_resource_name_timestamp
  • smarty_resource_name_secure
  • smarty_resource_name_trusted

الان المثال الحى وسوف نعتمد فيه على مصدر قواعد البينات
اولا يجب ان يكون لديك جدول فى القاعدة حتى تضع فيه القوالب ونفرض انه templates
ومكوناته كالتالى
CREATE TABLE  `templates` (
  `tpl_name` varchar(255) COLLATE utf8_bin NOT NULL,
  `tpl_source` longtext COLLATE utf8_bin NOT NULL,
  `tpl_timestamp` int(11) NOT NULL
);
ويمكنك اختيار نوع محتوى القالب كما تريد انا اخترت نوعlongtext اما اذا كنت تريد غير ذلك هذا خيارى ناتى لدوال استدعاء القالب من القاعدة
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
    $query = mysql_query(\"select tpl_source from `templates` where tpl_name=\'$tpl_name\'\");
    $row = mysql_fetch_array($query);
    
    if ($row) {
        $tpl_source = $row[\'tpl_source\'];
        return true;
    } else {
        return false;
    }
}

function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
{
    $query = mysql_query(\"select tpl_timestamp from `templates` where tpl_name=\'$tpl_name\'\");
    $row = mysql_fetch_array($query);
    
    if ($row) {
        $tpl_timestamp = $row[\'tpl_timestamp\'];
        return true;
    } else {
        return false;
    }
}

function db_get_secure($tpl_name, &$smarty_obj)
{
    // assume all templates are secure
    return true;
}

function db_get_trusted($tpl_name, &$smarty_obj)
{
    // not used for templates
}
// register the resource name \"db\"
$smarty->register_resource(\"db\", array(\"db_get_template\",
                                       \"db_get_timestamp\",
                                       \"db_get_secure\",
                                       \"db_get_trusted\"));
الان السؤال هو كيف استدعيها من القاعدة نحن سجلنا الدوال على انها متغير db فقط فقط عند استدعاء القالب اعمل التالى
$smarty->display(\"db:index.tpl\");

طبعا فى الاول لازم تكون عملت اتصال بقاعدة البينات اما لو قلت لى سبت محتوى الدالة db_get_secure فارغ ليه فالاجابة هى ان الدالة دى وظفيتها انها بتاكد ان محتوى القالب امن ام لا انت تقدر تعمل بيها ال انت عيزه

بواسطة: MacOS
منذ: 21 / سبتمبر / 2011 الساعة 12:45

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة