Autor Zpráva
MelkorNemesis
Profil
Ahoj, mam podivny problem, delam v zendu a kdyz musim udelat web bez nej tak se hur vzpomina, ale tohle je spis nekde moje chyba.

Mam index.php - zapnu session, nastavim jazyk a "require_once"nu soubor se spravnou jazykovou mutaci. V casti indexove vsechny preklady funguji.
Ale jak dojde kod k includovani obsahu (z GETu), tak soubor nacte, ale v nem jiz jazykove preklady nefunguji..samozrejme je to nacitane az po includnuti jazyku.
Funguje to pouze v pripade, ze do toho souboru includovaneho znovu dam require souboru s jazykovou mutaci. Proste mi to nezere to includnute pole z indexu.

orezany konkretni priklad
index.php
<?php session_start(); if(!isset($_SESSION['lang'])) {
	$_SESSION['lang'] = 'uk';
}
require_once('./languages/'.$_SESSION['lang'].'.php');
.
.
.
<?php Content::getContent(); ?>


SOUBOR S MUTACI
<?php
$translate = array(
	'about rezidence skala' =>'ABOUT REZIDENCE SKÁLA',
	'apartments for sale' => 'APARTMENTS FOR SALE',
	'apartments for rent' => 'APARTMENTS FOR RENT',
	'contact' => 'CONTACT',
.
.
.

A INCLUDOVANY SOUBOR
<tr>
<td><?echo $translate['name']?>:</td><td><input type="text" name="name" /> <?echo $translate['surname']?>: <input type="text" name="surname" /></td>
</tr>


Nezna nekdo nejakou castou pricinu nebo rozreseni? diky vsem za reakce
Kalby
Profil
nejsem si teda jistej ale myslim si ze to je tim ze ten obsah vypisujes pomoci tridy Content a ta nevidi promenou $translate, mel by jsi udelat neco takovydleho:

Content::getContent($translate);

a v te tride to vypsat
MelkorNemesis
Profil
Kalby: to je docela mozne.. ale je mi divny, proc by trida nevidela normalni promennou z cele stranky. Zkusim ji tam priradit jako clenskou promennou do te tridy nebo tu funkci udelat normalni, ne objektovou.
Potom podam report, diky!
MaxwellDemon
Profil
MelkorNemesis: tak jistě že jí nevidí ... od toho koneckonců ta objektovost je, i když v připadě php poněkud chytrohorákyňovská ... Kalby ti ten návod dává naprosto přesnej ... pokud jí v tý třídě nepotřebuješ k ničemu dalšímu, tak si předávej tu $translate proměnnou přímo do tý getContent() metody ... je to nejjednodušší způsob ... pokud z toho uděláš membera třídy, což pochopitelně taky jde, tak tu metodu zas nemůžeš volat jako statickou v objektovým kontextu ... tam si budeš muset vytvořit instanci tý Content třídy (může bejt asi klidně singleton) a na tý instanci teprve volat getContent()
MelkorNemesis
Profil
MaxwellDemon, Kalby: diky
vyresil sem to takhle
class Content
{
	public $translate;
	function __construct($translate) {
		$this->translate = $translate;
	}

 	public function _run(){
        include func_get_arg(0);
    }

      public function getContent() {
                if(!isset($_GET['p']))
                  {
                   $str = "main";
                  }
                else
                  {
                   $str = str_replace(array("\"","/"),"",$_GET['p']);
                  }
                $file = $str. ".php";
                if(!file_exists("./core/".$file))
                  {
                   $this->_run("./core/main.php");
                  }
                else
                  {
                   $this->_run("./core/".$file);
                  }
     }
}


a potom v tom includnutym souboru volam $this->translate.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: