Visualizzazione dei risultati da 1 a 7 su 7

Discussione: controller rotte

  1. #1

    controller rotte

    Salve a tutti, per capire meglio il funzionamento dei vari framework stò cercando di creare un controller molto semplice per le rotte usando $_SERVER['REQUEST_URI']. Il principio di funzionamento che intendevo applicare era che dato un indirizzo tipo sito/news/show venga recuperato l'uri, diviso nelle sue componenti, assegnato ad un array e usato come parametri per cercare/richiamare il determinato controller, quindi lo schema sarebbe sito/controller/action. Al momento recupero gli uri con
    Codice PHP:
    //recupero la request_uri separandola secondo i vari / 
    $this->path explode("/"$_SERVER['REQUEST_URI']); 
    //recupero lo script name (sito/index.php) e anche qui divido secondo gli /
    $this->script explode ("/"$_SERVER['SCRIPT_NAME']);
    //creo un nuovo array inserendoci la differenza fra i 2 array precedenti in modo da avere
    //i parametri pronti all'utilizzo (in pratica elimino sito/index.php)
    $this->uri array_diff($this->path$this->script); 
    Fino a questo punto tutto bene, ma qui sorge il problema. Ad ogni nuova chiamata dentro all'array uri mi viene inserito index.php quindi in pratica l'indirizzo varierebbe in:
    /sito/index.php/index.php/News (ho effettuato 2 chiamate in questo caso).

    Ormai ne ho provate di ogni, ma non riesco ad eliminare questo accodamento.
    Qualcuno ha qualche consiglio? Grazie in anticipo.

    P.s: lo scopo di tutto cioè oltre quello didattico è di iniziare ad utilizzare url senza query string e dirottando ogni chiamata da htaccess su index.php.
    Fare o non fare....non c'è provare!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    conosci già la risposta:
    usa un .htaccess

    non puoi fare altrimenti se vuoi eliminare il front controller dall'url.
    sometimes it's just like teaching pigs how to fly

  3. #3
    Puoi spiegarmi un attimo per cortesia?
    Fare o non fare....non c'è provare!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    dovresti avere un .htaccess formato in questo modo:

    Codice PHP:
    Options +FollowSymLinks
    IndexIgnore 
    */*
    RewriteEngine on

    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d


    # otherwise forward it to index.php
    RewriteRule . index.php 
    sometimes it's just like teaching pigs how to fly

  5. #5
    Questo risolverebbe il problema di vedere accodato un index.php ad ogni chiamata?
    Fare o non fare....non c'è provare!

  6. #6
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    mi pare che il problema non sia tanto in come ricavi i parametri dagli url, ma in come componi i link.
    Come componi i link?

  7. #7
    Ci stavo pensando stanotte ai link infatti. Essendo una cosa molto rudimentale al momento non ho secritto nessun helper per generare i vari link, quindi me li cambio a manina in base alle prove che voglio fare (l'helper arriverà quando capirò come funziona il tutto). Per ora ho provato in 3 modi:
    1- link in forma estesa localhost/sito/index.php/xyz
    2- index.php/xyz
    3- ho eliminato dal link ogni riferimento alla index provando ad inserire soltanto /controller/action (es:/News/show)

    In ogni prova si presenta il problema di index.php, nelle prime 2 chiamate l'array viene popolato correttamente, dalla terza in poi comincia ad accodare lo stesso index.php. Facendo un po' di echo/print_r mi è sembrato di capire che il problema è proprio in $_SERVER['REQUEST_URI'].
    Questo è il suo echo:
    /sito/index.php/index.php/index.php/ChiSiamo

    P.s: ho provato anche ad usare .htaccess (abilitato nella config di php), purtroppo il risultato è che il sito non è raggiungibile da nessun indirizzo.
    Fare o non fare....non c'è provare!

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.