ウェブアプリケーションを変更しています。これにより、ユーザーはlabel-color、background-color、およびfont-colorの16進値を入力できます。ユーザが値を入力し、「テンプレートを更新」をクリックすると。私は、ユーザーが入力する16進値に応じて、背景色、ラベルの色、およびフォントの色を更新できるようにする必要があります。私はラベルの色、背景色とフォントの色を他のテンプレート情報とともにMySQLテーブルに保存しています。私は、ビューを制御するすべての.phtml
ファイルに次の操作を行うことができます。CSSファイルの動的コンテンツ
$Idtemplate = $this->user->defaultTemplate;
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$Title_Shiprequest = $Thetemplate->descriptionShipRequestTitle;
$clabel = $Thetemplate->descriptionlabelColor;
$cbackground = $Thetemplate->descriptionBkgColor;
$cfont =$Thetemplate->descriptionFontColor;
$clabel
、$cbackground
、$cfont
は.phtml
におけるカラースタイリングのために使用されています。
問題は約34 .phtml
です。私がそれをこのようにしたいのであれば、色を担当するdivクラスを見つけてそこでそれぞれの変更を行う必要があります。私にとって非常に非効率的で時間のかかる解決策のように思えます。
しかし、すべての色の値が定義されて使用されるCSSファイルには、約4-5のクラスがあります。それは私のためには、CSSファイル(上記の唯一の問題はCSSファイルでは機能しません)上で述べたコードのような何かを行うためにはるかに簡単で効率的で、以下のようにそれらを参照してください(common.css
をcommon.php
と改名しました):
.panel1
{
width: auto;
height: 22px;
background-color: <?= $cbackground ?>;
padding: 5px;
}
データベースから色情報を取得するコードをインクルードしようとすると、プログラムが自分の.cssファイルを参照できないように、すべての書式が失われます。私の感覚は、common.phpという名前に変更したにもかかわらず、私がhessの中でオブジェクトをインスタンス化することは許可されていないということです。この状況で回避策がありますか?
更新: 私は既にヘッダー( "Content-type:text/css")を含んでいました。しかし、私は次のことを確かめるためにもう一度試しました。
<?php
header("Content-type: text/css");
$Idtemplate = $this->user->defaultTemplate;
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$clabel = $Thetemplate->descriptionlabelColor;
$cbackground = $Thetemplate->descriptionBkgColor;
$cfont =$Thetemplate->descriptionFontColor;
?>
<style type='text/css'>
.text4
{
color: <?=$clabel?>;// font and bkg colors are referred to likewise
}
</style>
残念ながら、これはうまくいきませんでした。私も試してみました:getdata.phpは、コードを持っている
<?php
header("Content-type: text/css");
include('C:/sr/public/css/getdata.php');
?>
<style type='text/css'>
.text4
{
color: <?=$clabel?>;// font and bkg colors are referred to likewise
}
</style>
は:
<?php
$Idtemplate = $this->user->defaultTemplate;
include('C:/sr/application/models/Template.php');
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$clabel = $Thetemplate->descriptionlabelColor;
$cbackground = $Thetemplate->descriptionBkgColor;
$cfont =$Thetemplate->descriptionFontColor;
?>
それはどちらか動作しませんでした。私は関数を定義し、common.phpのからそれを呼び出そうとしました第四バリエーションとして:
<?php
function getLabelColor() {
$clabel = '#001122';
return $clabel;
}
function getBkgColor() {
$cbackground = '#002233';
return $cbackground;
}
function getFontColor() {
$cfont = '#004455';
return $cfont;
}
?>
common.phpのは有している場合:これは働いていた驚くべき
<?php
header("Content-type: text/css");
include('C:/sr/public/css/getdata.php');
?>
<style type='text/css'>
.text2
{
color: <?php echo getLabelColor();?>; /* Bkg and font colors are referred to likewise*/
}
</style>
を。私は
$Idtemplate = $this->user->defaultTemplate;
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$clabel = $Thetemplate->descriptionlabelColor;
return ('#'.$clabel);
で(各機能の$ cbackgroundと$ cfontと一緒に)
$clabel = '#001122';
を交換しようとしたとき、しかし、それは動作を停止。だから私はgetdataを動かした。上記の全ての機能を含めたクラス作ったモデルにPHP:
<?php
Class fetchData extends Template
{
function getLabelColor() {
$Idtemplate = 101// I had assign a known value here. I was not able to use $this->user->defaultTemplate; Not sure why I wont be able to use $this
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$clabel = $Thetemplate->descriptionlabelColor;//for future usage for dynamic color
return ('#'.$clabel);
}
function getBkgColor() {
$Idtemplate = 101// I had assign a known value here. I was not able to use $this->user->defaultTemplate; Not sure why I wont be able to use $this
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$cbackground = $Thetemplate->descriptionBkgColor;//for future usage for dynamic color
return ('#'.$cbackground);
}
function getFontColor() {
$Idtemplate = 101// I had assign a known value here. I was not able to use $this->user->defaultTemplate; Not sure why I wont be able to use $this
$Objtemplate = new Template();
$Thetemplate = $Objtemplate->fetchRow("id=" . $Idtemplate);
$cfont =$Thetemplate->descriptionFontColor;//for future usage for dynamic color
return ('#'.$cfont);
}
}
?>
が、私は以下のような関数を呼び出していましたが:
include('C:/sr/application/models/getdata.php');
$datafetchObj = new fetchData();
$clabel = $datafetchObj->getLabelColor(); //purple 51:0:153
$cbackground = $datafetchObj->getBkgColor(); //Light blue 102:102:204
$cfont = $datafetchObj->getFontColor();
これは.phtmlから働いていたではなく、common.phpのから。 common.phpはオブジェクトのインスタンス化を許可されていないと思います。
PS:common.php
内のページの最初の行として次の行を追加し
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl();?>/css/common.php" />
解決済みですか? –
いいえ、それは解決されません。上記のUPDATEをご覧ください。 – Sumit