Php težava
5 naročnikov
5 naročnikov
Pozdravljeni zopet bi vas prosil za pomoč. Sedaj se je zateknilo pri php-ju. Rad bi napisal kodo, ki bi preverjala ali je datoteka v mapi ali je ni. Ime dobim iz spremenljivke $movie->name, vendar ime ni celotno. Zadeva deluje, če vpišem ročno
ime, rad pa bi, da bi bilo odvisno od spremenljivke.
Primer:
Iz spremenljivke $movie->name dobim ime: test (2005), rad pa bi dobil test (2005) 1X.zip
{$ime = str_replace(':','', $movie->name)}
{$preverjanje = "test (2005) 1X.zip"} // ročno vpisano. Drugače želim tako: {$preverjanje = "$ime"}
{$filename = "../test/$preverjanje"}
{if (file_exists($filename))}
{$je = "je"}
{$je|htmlentities:3:'UTF-8'}
{/if}
{if (!(file_exists($filename)))}
{$ni = "ni"}
{$ni|htmlentities:3:'UTF-8'}
{/if}
Hvala za pomoč in lep pozdrav
7 odgovorov
Pozdravljen,
kot prvo ta zadeva ni za v template, ampak v controller ali pa v model.
V templatu več kot toliko ne smeš imeti (če želiš biti dober MVC programer):
{if $movie->has_file()}
nekaj
{else}
nekaj drugega
{/if}
V "Movie" modelu pa imaš potem metodo
public function has_file()
{
return file_exists("../test/$this->name 1X.zip");
}
Namig: namesto relativne poti "../test" definiraj to pot nekje na začetku skripte ali v kakšnem configu:
define('MOJ_DIREKTORIJ', '../test/');
Torej bi v modelu lahko imel tako:
return file_exists(MOJ_DIREKTORIJ ."$this->name 1X.zip");
Good luck mate!
Hmm nikakor mi ne rata. atlet to sem poskusil vendar mi ne deluje. 1X je stalno prisoten. SlimDeluxe to sem tudi poskusil, vendar mi potem ne gre koda čez. Mogoče še kakšn nasvet?
ce ne opises dobro problema ti ne bo noben znal pomagat
tvoj problem:
Iz spremenljivke $movie->name dobim ime: test (2005), rad pa bi dobil test (2005) 1X.zip
resitev
$preverjanje = $ime . " 1X.zip";
ce pa bos razlozil bolje svoj problem, kaj tocno bi rad dosegel, bos veliko bolj verjetno dobil odgovor
Predvidevam, da delaš template v smarty-u. Tam ne moreš uporabljati . za konkatenacijo, ampak
{$preverjanje = "$ime 1X.zip"}
Ali uporabi "cat" modifier.
Ampak to je vse bz, kot rečeno tega se ne počne v templatu. "potem ne gre koda čez" pa ni opis napake, na podlagi katerega bi ti lahko nadalje pomagal.