سلام
اگه بخوایم برای تابع diePage درون فایل style.css کلاس تعریف کنیم، چیکار باید کرد؟
راه های متفاوتی واسه اینکار هست و هر چقدر مباحث جلوتر بره و مخصوصا توو شی گرایی که برسیم، دستمون بازتر هست واسه تولید و مدیریت چنین پیج هایی.
یک راه اینه که پیج tpl-index رو در قسمتهای مجزا تولید کنید تا بتونید برای diePage هم که از اسمش پیداس خودش میتونه یک پیج مدیریت خطا باشه، header و body و footer تولید کنید.
اما ایده ای که برای این قسمت من معرفی میکنم اینه که داخل فایل helpers.php یک تابع با اسم registerCssFile بسازید: (custom کردن ایده با خودتون)
function registerCssFile($files)
{
if(!empty($files))
{
foreach ($files as $file)
echo '<link rel="stylesheet" type="text/css" href="'. $file .'" >' . PHP_EOL;
}
}
میتونی داخل فایل config.php هم فایل هارو تعریف کنی. برای مثال:
$cssFiles = [
'http://mysite.com/assets/css/style1.css',
'http://mysite.com/assets/css/style2.css',
'http://mysite.com/assets/css/style3.css',
'http://mysite.com/assets/css/style4.css',
];
و برای استفاده میتونید داخل tpl-index بجای نوشتن دستی فایل ها، بصورت داینامیک، فایل های css رو مدیریت کنید و به پیج اضافه کنید:
<head>
<title></title>
<?php registerCssFile($cssFiles); ?>
</head>
و تابع diePage هم مثلا به این شکل:
function diePage($msg)
{
registerCssFile(['http://mysite.com/assets/css/error.css']);
die("<div class='err'>$msg</div>");
}
یا به این شکل:
function diePage($msg, $cssFiles = null)
{
registerCssFile($cssFiles);
die("<div class='err'>$msg</div>");
}
سلام.
تفاوتی با حالت عادی نداره، کافیه اتربیوت کلاس رو اضافه کنید:
echo '<div class="class-name">' . $msg . '</div>';
نه!
بذارید سوالمو واضح تر بپرسم:
من داخل فایل helpers.php برای تابع diePage کلاس تعریف کردم و استایل هامو به فایل css پروژه (style.css) اضافه کردم، الان برای اینکه استایل ها درون صفحه index.php نمایش داده بشه لازمه که اول tpl-index بارگذاری بشه بعد init یعنی:
<?php
include "tpl/tpl-index.php";
include "bootstrap/init.php";
اول باید قالب که شامل فایل style.css هستش بارگذاری بشه بعد فایل helpers.php که درون init است اون تابع رو با استایلش نشون بده.
که کار بالا اشتباه هستش و مشکلات دیگه ای درست میکنه.
چطور باید این مشکل رو حل کرد؟
بجای یک فایل tpl-index.php میتونید فایل هارو در چند فایل بشکنید:
tpl-header.php
tpl-body.php
tpl-footer.php
فایل init
<?php
include "config.php";
include "constants.php";
include "libs/helpers.php";
/** Database Connection */
try {
$pdo = new PDO("mysql: host=$db_config->host; dbname=$db_config->db; charset=UTF8mb4", $db_config->user, $db_config->pass);
} catch (PDOException $e) {
diePage("Connection Failed: " . $e->getMessage());
}
include "libs/lib-Auth.php";
include "libs/lib-Tasks.php";
فایل helpers
<?php
/** Show messages and die */
function diePage($msg)
{
die("<div class='err'>$msg</div>");
}
فایل index
<?php
include "bootstrap/init.php";
include "tpl/tpl-index.php";
خروجی هم که بدون استایل هستش.