Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wlasne Template
kicaj
post 18.05.2004, 22:47:29
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


Proboje napisac wlasna klase do obslugi szablonow, jakos mi to idzie, (dopiero zaczynam zabawe z klasami) i jest o pewnien problem.

Mam cos takiego:[php:1:4c0c784fef]<?php
class Templates {

function LoadFile($file_id, $file_name, $file_path) {

if(file_exists($file_path.'/'.$file_name)) {

$file_open = fopen($file_path.'/'.$file_name, "r");
$file_content = fread($file_open, filesize($file_path.'/'.$file_name));
fclose($file_open);

$this -> dane = $file_content;

} else {
return false;
}

}

function Content($name, $value) {

$file_display = str_replace('{'.$name.'}', $value, $this->dane);

//W jaki sposob (chyba bedzie potrzeba petla) zrobic zeby
//kazda blok byl podmieniany??

$this -> Replace = $file_display;

}

function Display() {
return $this-> Replace;
}



}

$template = new Templates;
$template -> LoadFile('start', 'start.tpl', '../templates');
$template -> Content('title', 'Tytul Strony');
$template -> Content('body', 'fksdufdut8');
$template -> Content('itp', '<font color=red>gdsg</font>');
echo $template -> Display();
?>[/php:1:4c0c784fef]


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
hwao
post 19.05.2004, 07:04:52
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




[php:1:0cee5d68c0]<?php
function Content($name, $value) {

$file_display = str_replace('{'.$name.'}', $value, $this->dane);

//W jaki sposob (chyba bedzie potrzeba petla) zrobic zeby
//kazda blok byl podmieniany??

$this -> Replace = $file_display;

}
[/php:1:0cee5d68c0]

Może nie wykonuj tego tak w "locie" to nie bedzie potrzebna pętla smile.gif
[php:1:0cee5d68c0]<?php
function Content($name, $value)
{ // Dodaj sobie te 2 var 'y i ustal jakies sensowne nazwy winksmiley.jpg
$this->array[] = $name;
$this->array2[] = $value;
}
[/php:1:0cee5d68c0]
Tu wrzucasz sobie dane co ma na co zamienic nastepnie dodajesz 2 funckje do tpl'owania.
[php:1:0cee5d68c0]<?php
function Tpl()
{
/* Bedzie dzialac pod warunkiem ze $this->dane to jest zmienna
* ktora zawiera ciag (kodu htm) jezeli to tablica to ja poprostu
* polacz
*/
return str_replace('{'.$this->array.'}', $this->array2, $this->dane);
}
?>[/php:1:0cee5d68c0]
Powinno działać
Go to the top of the page
+Quote Post
kicaj
post 19.05.2004, 13:16:56
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


Kod
Notice: Array to string conversion in wwwfirstclassestemplates.class.php on line 29

wiersz 29:
[php:1:edaa7a3869]<?php
return str_replace('{'.$this->array.'}', $this->array2, $this->dane);
?>[/php:1:edaa7a3869]
Co dalej?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
scanner
post 19.05.2004, 13:21:39
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
Kod
Notice: Array to string conversion in wwwfirstclassestemplates.class.php on line 29

wiersz 29:
[php:1:1b2c452986]<?php
return str_replace('{'.$this->array.'}', $this->array2, $this->dane);
?>[/php:1:1b2c452986]
Co dalej?
No tutaj jest bład logiczny.
$this->aray trzevba potraktować pętlą i do pierwszego param,etyru dawac wartosci tablicy a nie cala tablice
albo cala tablice potraktowac czyms takim:[php:1:1b2c452986]<?php
foreach( $this->array as $mixValue )
{
$arrTemp[] = '{'.$mixValue.'}';
}
$this->array = $arrTemp;
?>[/php:1:1b2c452986]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
kicaj
post 19.05.2004, 13:41:26
Post #5





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


wlasnie!!

Wiedzialem ze musi byc koniecznie petla hehe
thx scanner smile.gif


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Wankster
post 19.05.2004, 21:43:37
Post #6





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

Ostrzeżenie: (0%)
-----


Nie musi być pętla winksmiley.jpg
W metodzie Content() możesz dać tak:[php:1:b6c4a98e90]<?php

function Content($name, $value)
{ // Dodaj sobie te 2 var 'y i ustal jakies sensowne nazwy
$this->array[] = '{' . $name . '}';
$this->array2[] = $value;
}

?>[/php:1:b6c4a98e90]
A później tylko[php:1:b6c4a98e90]<?php

return $this->dane = str_replace( $this->array, $this->array2, $this->dane );

?>[/php:1:b6c4a98e90]
Go to the top of the page
+Quote Post
kicaj
post 19.05.2004, 22:15:31
Post #7





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


hehe rzeczywiscie smile.gif

trzeba bylo tylko przestawic nawiasy klamrowe smile.gif

thx


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Ozzy
post 20.05.2004, 13:26:26
Post #8





Grupa: Zarejestrowani
Postów: 204
Pomógł: 0
Dołączył: 26.12.2003
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


albo tak:

[php:1:9ad72f476a]<?php
public function assign($assignment, $value) {

$this->assignments[chr(123) . $assignment . chr(125)] = $value;

}


public function compile($print = FALSE) {

$tpl_output = str_replace(array_keys($this->assignments),
array_values($this->assignments), $this->tpl_contents);

if($print) {
print $tpl_output;
} else {
return $tpl_output;
}

}
?>[/php:1:9ad72f476a]

zastanawiam się jeszcze, czy nie prościej by było:

[php:1:9ad72f476a]<?php
$this -> dane = file_get_contents($file_path.'/'.$file_name);
?>[/php:1:9ad72f476a]
Go to the top of the page
+Quote Post
kicaj
post 20.05.2004, 20:08:36
Post #9





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


...moze i tak ale dopiero zaczynam zabawe z klasami wiec ten przyklad jeszcze narazie odpada smile.gif


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:48