Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    front-controller per includere file di un'altra cartella

    Come da titolo, vorrei creare un front-controller per includere file di un'altra cartella nel caso in cui non "esistono" nellca cartella corrente...
    Esempio, ho questa cartella Roma

    codice:
    Roma
    - index.php
    - detail.php
    - show.php
    e questa cartella Londra

    codice:
    Londra
    - index.php (stesso contenuto di roma/index.php)
    - detail.php (contenuto diverso da roma/detail.php)
    - show.php (stesso contenuto di roma/show.php)
    Quindi la cartella Londra dovrebbe contenere solo il file detail.php e caricare il resto dalla cartella Roma...

    Questo è il file .htaccess

    codice:
    RewriteEngine On
    RewriteRule . /front-controller.php [L]
    e questo il front-controller

    codice:
    path = "{$_SERVER['DOCUMENT_ROOT']}$_SERVER['REQUEST_URI']}"; 
    if (! file_exists ($path) ) include str_replace("londra" , "roma" , $path );
    Il problema è che riesco ad includere gli url chiamati direttamente, cioè londra/index.php include roma/index.php, ma se in quest'ultimo c'è un collegamento ad un altro contenuto, ottengo file non trovato...

    in roma/index.php

    codice:
    include 'content/header.php'
    quando chiamo londra/index.php l'errore è 'content/header.php' failed to open stream: No such file or directory

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    La cartella content dove sta? nella root allo stesso livello di roma e londra? In tal caso prova
    include '/content/header.php'

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Io solitamente in questi casi uso twig per gestire le view, ti semplifica decisamente il lavoro.

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    La cartella content dove sta? nella root allo stesso livello di roma e londra? In tal caso prova
    include '/content/header.php'
    Non è quello il problema ma mi hai portato sulla strada giusta...

    Avendo ad esempio una struttura del genere

    codice:
    Roma
    -- index.php
    -- content/start.php
    -- content/header.php
    -- content/bottom.php

    nel file index.php c'è
    codice:
    include content/start.php

    mente nel file start.php
    codice:
    include content/header.php
    include content/bottom.php

    Quindi quando chiamo la index dalla cartella londra, mi cerca il file incriminato nella cartella roma/content/content/header.php

    Ora, modificando start.php in questo modo
    codice:
    include header.php
    include bottom.php

    sembra funzionare sia dalla cartella roma che londra...
    Forse dovrei chiamare le include in modo diverso? Magari aggiungendo la voce __DIR__ ?
    Provo a rimodulare la cartella Roma cercando di non generare altri errori/problemi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.