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

    Come gestire indirizzi url con struttura MVC

    Ciao a tutti

    mi ritrovo ad avere un progetto condiviso su SVN, dove ciascuno dei membri lavora nel suo branch (nomeprogetto\branches\nomesviluppatore\...) dove c'è la seguente alberatura di directory (stiamo usando l'architettura mvc)


    |public|
    | |index.php
    |
    |core|
    | |view
    | |controller
    | |model


    La index richiama il controller che a sua volta mostra la indexView dentro la cartella view, dove risiede anche la cartella dei css.
    Il punto è che lavorando con gli indirizzi relativi si perde la grafica dei css (poiché ora gli indirizzi si riferiscono a public e non più a core), mentre lavorando con gli indirizzi assoluti, bisogna stare a cambiarli ogni volta per passare dal branch al trunk.

    Non c'è un modo semplice per definire una volta per tutte qual è il path assoluto della home e ritrovarsela specificata in tutti i file? Non parlo di namespace, perché non tutti i file sono delle classi...

  2. #2
    Ciao,
    forse dico una stupidata, ma il tag html <base> ti potrebbe essere utile?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Gli asset (css, js, immagini) mettile dentro public, altrimenti dopo il deploy ti puoi trovare dei casini.
    Quei file devono essere pubblici e accessibili, quindi ha senso metterli in /public.

    A quel punto non avrai più i problemi con i path.

  4. #4
    Di solito in questi casi metto nell'helper (non lo vedo nella tua struttura ma di solito si rende indispensabile avere un "helper.php" con dentro funzioni usate un po ovunque) una serie di funzioni tipo:

    base_url() // ritorna l'url del progetto (www.sito.com/)
    fs_base_url() //ritorna l'indirizzo fisico della root del progetto (home/var/www/html/sito/)
    assets_url() // ritorna l'url dove risiedono i files grafici (www.sito.com/assets/)

    cosi nelle varie view uso

    <img src="<?php echo assets_url();?>img/home/logo.png" />
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    86
    Ciao,

    io uso una costante, es:

    Codice PHP:
    define('ABS_PATH''https://www.nomedominio.tld');
    define('ASSETS_DIR''https://www.nomedominio.tld/assets/'); 
    anche se magari non è la soluzione ottimale.

    Quella proposta da Infocurci è sicuramente migliore, un paio di funzioni nell'helper e le richiami dove vuoi, con l'evidente vantaggio di poter modificare il codice (ad esempio il path) in un solo punto del programma.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.