login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Installatie Smarty geeft probleem (Opgelost)

Offline janssen1 - 06/04/2010 10:01
Avatar van janssen1Nieuw lid Hallo,

Ik probeer Smarty te installeren, het lijkt met niet lastig, maar het lukt me toch niet. Er zijn verschillende tutorials die ik heb geprobeerd o.a. http://news.php.net/php.smarty.dev/2703. Het probleem is dat de pagina die weergegeven wordt leeg is in plaats van dat er een variabele uit de php file weergegeven wordt.

Weet iemand wat er nog fout zou kunnen zijn?

31 antwoorden

Gesponsorde links
Offline marten - 06/04/2010 10:07
Avatar van marten Beheerder Wil je eens wat code plaatsen hoe je Smarty gebruikt?

Let wel even op de forum regels (Code langer dan +/- 70 regels plaatsen op www.plaatscode.be en hier de link plaatsen)
Offline janssen1 - 06/04/2010 11:23 (laatste wijziging 06/04/2010 11:44)
Avatar van janssen1 Nieuw lid index.php =
  1. <?php
  2. // load Smarty library
  3. require('../Smarty/Smarty.class.php');
  4.  
  5. $smarty = new Smarty;
  6.  
  7. $smarty->template_dir = '/templates';
  8. $smarty->config_dir = '/config';
  9. $smarty->cache_dir = '/cache';
  10. $smarty->compile_dir = '/templates_c';
  11.  
  12. $smarty->assign('name','voorbeeldnaam');
  13.  
  14. $smarty->display('pagina.tpl');
  15. ?>


pagina.tpl =
  1. Hello, {$name}!
  2. </body>
  3. </html>


Op een webserver staat de map Smarty met daarin de inhoud van lib uit de gedownloade smarty. Ook staat er een map "myFirstSmarty" met daarin 4 mappen "templates", "templates_c", "configs" en "cache". Ook staat de index.php in "myFirstSmarty". Pagina.tpl staat in de map "templates".
Offline Ultimatum - 06/04/2010 12:07
Avatar van Ultimatum PHP expert Zet bovenaan je index.php eens error_reporting(E_ALL);. En ik weet niet of het is fout gegaan met kopieren maar je bent ook een > vergeten na ? bij index.php.
Offline cloudstrife - 06/04/2010 12:10
Avatar van cloudstrife PHP beginner Ik zou die / voor je directories weghalen.. Verwijst dit immers niet naar de root?
Offline janssen1 - 06/04/2010 12:17
Avatar van janssen1 Nieuw lid De > in index.php was inderdaad verkeerd gegaan met kopieren. Het werkt nog niet en ik krijg ook geen errors te zien. De "Hello" van index.tpl wordt ook niet weergegeven.

  1. <?php
  2. // load Smarty library
  3. require('../Smarty/Smarty.class.php');
  4.  
  5. $smarty = new Smarty;
  6.  
  7. $smarty->template_dir = 'templates';
  8. $smarty->config_dir = 'config';
  9. $smarty->cache_dir = 'cache';
  10. $smarty->compile_dir = 'templates_c';
  11.  
  12. $smarty->assign('name','voorbeeldnaam');
  13.  
  14. $smarty->display('pagina.tpl');
  15. ?>


  1. Hello, {$name}!
  2. </body>
  3. </html>
Offline ArieMedia - 06/04/2010 12:18
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
assign moet in een array

  1. require('../Smarty/Smarty.class.php');
  2.  
  3. $smarty = new Smarty;
  4.  
  5. $smarty->template_dir = 'templates';
  6. $smarty->config_dir = 'config';
  7. $smarty->cache_dir = 'cache';
  8. $smarty->compile_dir = 'templates_c';
  9.  
  10. $smarty->assign(array('naam' => 'Voorbeeldnaam'));
  11.  
  12. $smarty->fetch('pagina.tpl');
  13. ?>
Offline janssen1 - 06/04/2010 12:28
Avatar van janssen1 Nieuw lid Dat heb ik aangepast, helaas blijft het probleem. Het lijkt erop dat pagina.tpl er helemaal niet aan te pas komt.
Offline marten - 06/04/2010 13:48
Avatar van marten Beheerder Is het een Windows based webserver of een Linux based webserver?
Offline janssen1 - 06/04/2010 14:12
Avatar van janssen1 Nieuw lid Linux based
Offline marten - 06/04/2010 14:19
Avatar van marten Beheerder Dan moet je wel de juiste paden aanhouden:

Windows:
/website

Linux
/web/www.domein.nl/templates

etc.

Linux rekent namelijk anders met mappen dan Windows.
Offline janssen1 - 06/04/2010 14:34
Avatar van janssen1 Nieuw lid Oke, de server is niet van mezelf, dus ik kan er bij via plesk en ftp. In de tutorial zie ik dat de Smarty map in /usr/local/lib/php/ moet, maar hoe kom ik daarbij?
Offline marten - 06/04/2010 14:41
Avatar van marten Beheerder Het is server afhankelijk.

Het beste kan je het volgende even uitvoeren in je index.php

  1. print_r($_SERVER['DOCUMENT_ROOT']);


Dan weet je het path.
Offline janssen1 - 06/04/2010 14:54
Avatar van janssen1 Nieuw lid /var/www/vhosts/www.domein.nl/httpdocs

In de tutorial staat dat de template files het beste buiten de httpdocs kunnen staan, maar daar heb ik geen rechten, is dat een probleem?
Offline marten - 06/04/2010 14:59
Avatar van marten Beheerder Zet nu eerst eens als test je directory's als volgt:

  1. $path = '/var/www/vhosts/www.domein.nl/httpdocs/';
  2.  
  3. // load Smarty library
  4. require($path . 'Smarty/Smarty.class.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8. $smarty->template_dir = $path . 'templates';
  9. $smarty->config_dir = $path . 'config';
  10. $smarty->cache_dir = $path . 'cache';
  11. $smarty->compile_dir = $path . 'templates_c';
  12.  
  13. $smarty->assign('name','voorbeeldnaam');
  14.  
  15. $smarty->display('pagina.tpl');
Offline janssen1 - 06/04/2010 16:12 (laatste wijziging 06/04/2010 16:27)
Avatar van janssen1 Nieuw lid Ik heb nu index.php, templates, templates_c, configs en cache in httpdocs staan en pagina.tpl in templates.

index.php:
  1. <?php
  2. $path = '/var/www/vhosts/www.domein.nl/httpdocs';
  3. // put full path to Smarty.class.php
  4. require($path.'Smarty/Smarty.class.php');
  5. $smarty = new Smarty();
  6.  
  7. $smarty->template_dir = $path.'templates';
  8. $smarty->compile_dir = $path.'templates_c';
  9. $smarty->cache_dir = $path.'cache';
  10. $smarty->config_dir = $path.'configs';
  11.  
  12. $smarty->assign(array('naam' , 'Voorbeeldnaam'));
  13.  
  14. $smarty->fetch('pagina.tpl');
  15. ?>


pagina.tpl:
  1. Hello, {$name}!
  2. </body>
  3. </html>


maar als ik naar index.php ga wordt er niets weergegeven.

EDIT: In de httpdocs staat ook een map Smary met de inhoud van lib
Offline ArieMedia - 06/04/2010 22:29
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
$name moet je natuurlijk ook veranderen naar $naam nu.

array('key' => 'value');

In smarty roep je aan met de key (dus {$key} in dit geval), en zal het value weergeven.
Offline janssen1 - 07/04/2010 08:51 (laatste wijziging 07/04/2010 10:23)
Avatar van janssen1 Nieuw lid Oke, dat staat nu goed:

  1. <?php
  2. $path = '/var/www/vhosts/www.domein.nl/httpdocs/';
  3. // put full path to Smarty.class.php
  4. require($path.'Smarty/Smarty.class.php');
  5. $smarty = new Smarty();
  6.  
  7. $smarty->template_dir = $path.'templates';
  8. $smarty->compile_dir = $path.'templates_c';
  9. $smarty->cache_dir = $path.'cache';
  10. $smarty->config_dir = $path.'configs';
  11.  
  12. $smarty->assign(array('name' => 'Voorbeeldnaam'));
  13.  
  14. $smarty->fetch('pagina.tpl');
  15. ?>


  1. Hello, {$name}!
  2. </body>
  3. </html>


Hij geeft nog niets weer in de browser, het lijkt te gaan om de regel:
require($path.'Smarty/Smarty.class.php');

want als ik daarvoor een echo zet wordt die weergegeven, maar daarna een echo laat niets zien.

EDIT: Dit kwam door de verkeerde url in $path. Nu werken de echos op elke plek ni de PHP, maar wordt wel een lege pagina weergegeven.
Offline ArieMedia - 07/04/2010 10:26
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
doe een echo $smarty->fetch('pagina.tpl');
Offline janssen1 - 07/04/2010 10:33
Avatar van janssen1 Nieuw lid Dat laat niets zien...elke keer een lege pagina met
  1. <head></head>
  2. <body></body>
  3. </html>


Alsof die pagina.tpl niet kan vinden, die staat in de map /var/www/vhosts/www.domein.nl/httpdocs/templates, zoals het volgens mij hoort.
Offline ArieMedia - 07/04/2010 10:38
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Zet eens wat tekst in je .tpl dan, en kijk of je wat te zien krijgt.

Krijg je geen tekst te zien weet je waar het probleem ligt.

verder moet compile-dir en de cache-dir schrijfbaar zijn voor PHP.
Offline janssen1 - 07/04/2010 10:43
Avatar van janssen1 Nieuw lid Er is geen tekst te zien en er staat al "Hello," in de tpl, maar dat wordt niet weergegeven.
Het probleem ligt dus bij de PHP...maar wat precies, het lijkt alsof hij heel smarty niet kent, maar smarty staat er wel.

templates_c en cache zijn schrijfbaar voor PHP.
Offline Jurgo - 07/04/2010 10:51
Avatar van Jurgo PHP interesse include je wel de smarty class bestanden
Misschien gaat het wel fout bij het assignen van het php bestand aan het tpl bestand. Kun je laten zien hoe je dit doet?
Offline ArieMedia - 07/04/2010 10:52
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Jurgo schreef:
include je wel de smarty class bestanden
Misschien gaat het wel fout bij het assignen van het php bestand aan het tpl bestand. Kun je laten zien hoe je dit doet?
Als je de vorige pagina's bekijkt staat er hoe hij dat doet.
Offline genkstar - 07/04/2010 12:01
Avatar van genkstar Nieuw lid Heb je wel lees-rechten op die template files?
En Als dat toch niet lukt, zou ik opnieuw de Smarty library downloaden en vervangen met de oude, heb ik ook al eens meegemaakt.

$smarty->assign('name', 'value');

En zo ken je waardes toe aan smarty-variabelen..
Offline janssen1 - 07/04/2010 12:05 (laatste wijziging 07/04/2010 12:10)
Avatar van janssen1 Nieuw lid Ik heb leesrechten op de template files. En dat opnieuw installeren/vervangen van de Smarty files heb ik ook al vaak gedaan.

Irritant probleem, omdat het zo makkelijk lijkt en het toch niet lukt.

EDIT: de smarty files toch nog een keer vervangen, maar dat maakt geen verschil.
Offline ArieMedia - 07/04/2010 12:29
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
genkstar schreef:
Heb je wel lees-rechten op die template files?
En Als dat toch niet lukt, zou ik opnieuw de Smarty library downloaden en vervangen met de oude, heb ik ook al eens meegemaakt.

$smarty->assign('name', 'value');

En zo ken je waardes toe aan smarty-variabelen..
Jij gaat recht in tegen wat ik zeg. De waardes die je in smarty assigned moeten een array zijn, anders doet hij het niet.
Offline janssen1 - 08/04/2010 08:53
Avatar van janssen1 Nieuw lid Zou iemand er meer mee kunnen als ik de link naar de pagina geef?
Offline genkstar - 08/04/2010 14:26
Avatar van genkstar Nieuw lid Dat zal zeker helpen 
Offline janssen1 - 08/04/2010 16:13 (laatste wijziging 08/04/2010 16:24)
Avatar van janssen1 Nieuw lid http://hoogvliet.gkv.nl/test/

Daar staat het nu, probeer nu te debuggen, maar dat lijkt ook niet te werken. Nu wel display ipv fetch gebruikt, volgens de documentatie mag: echo fetch() of display()

  1. <?php
  2. $path = '/var/www/vhosts/hoogvliet.gkv.nl/httpdocs/test/';
  3. // put full path to Smarty.class.php
  4. require_once($path.'Smarty/Smarty.class.php');
  5. $smarty = new Smarty();
  6. $smarty->compile_check = true;
  7. $smarty->debugging = true;
  8.  
  9. $smarty->template_dir = $path.'templates';
  10. $smarty->compile_dir = $path.'templates_c';
  11. $smarty->cache_dir = $path.'cache';
  12. $smarty->config_dir = $path.'configs';
  13.  
  14. $smarty->assign(array('name' => 'Voorbeeldnaam'));
  15.  
  16. $smarty->display('pagina.tpl');
  17. ?>


  1. {debug}
  2. Hello, {$name}!
  3. </body>
  4. </html>
Offline genkstar - 08/04/2010 20:33
Avatar van genkstar Nieuw lid Zet eens onder error_reporting(E_ALL);
ini_set('display_errors', 1); en bekijk je pagina nog eens..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.339s