Php težava

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

Kaj pa če narediš tako:

$preverjanje = $ime . " 1X.zip";
1

Kaj naj bi pomenil ta 1X ?
Je to vedno prisotno pa nikoli v spremenljivki?

2

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!

3

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?

2

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

2

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.

1

Pa smo poštimal :), najlepša hvala vsem za pomoč, vsak post mi je prišel prav. Zadevo sem rešil čisto preprosto, samo 1X.zip sem moral napisati brez narakovajev in je stvar začela delovati. Si bom pa zapomnil dobre nasvete, kako lahko izboljšam stran. Še enkrat hvala

1