Salve a tutti, da qualche tempo ho comprato un libro che si chiama "Sviluppare applicazioni Web 2.0 con PHP". Sto seguendo i vari capitoli ma mi trovo davanti ad un problema con i path relativi ai link generati.
Ho installato Apache+PHP+MySQL e creato un virtualhost come richiesto dal libro:
La ServerRoot e la DocumentRoot di Apache son quelle di default.codice:NameVirtualHost *:80 # Virtual Host for phpweb20 <VirtualHost *:80> ServerName phpweb20 DocumentRoot "C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/htdocs" <Directory "C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/htdocs"> AllowOverride All Options All Order allow,deny Allow from all </Directory> php_value include_path ".;C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/include;C:/php/PEAR" php_value magic_quotes_gpc off php_value register_globals off SetEnv APP_CONFIG_FILE "settings.ini" SetEnv APP_CONFIG_SECTION "development" </VirtualHost>
La mia applicazione risiede su http://phpweb20 (un host fittizio creato nel file hosts di windows); i miei link sono creati dinamicamente, quindi vorrei che il metodo getBaseUrl() di Zend_Controller_Front's tornasse la stringa "http://phpweb20/account" invece di solamente "/account". Per farvi capire posto il codice proposto dal libro:
Ecco il metodo gerUrl() per ricavare un url da utilizzare nelle pagine web:
Ecco un plugin smarty relativo che lo utilizza:codice:public function getUrl($action = null, $controller = null) { // At this point, $url is nothing $url = rtrim($this->getRequest()->getBaseUrl(), '/') . '/'; // Now, $url becomes "//index" if I'm e. g. at the front page $url .= $this->_helper->url->simple($action, $controller); return $url; }
Per completezza posto anche il mio file settings.ini e le regole dell'.htaccess:codice:function smarty_function_geturl($params, $smarty) { $action = isset($params['action']) ? $params['action'] : null; $controller = isset($params['controller']) ? $params['controller'] : null; $route = isset($params['route']) ? $params['route'] : null; $helper = Zend_Controller_Action_HelperBroker::getStaticHelper('url'); if (strlen($route) > 0) { unset($params['route']); $url = $helper->url($params, $route); } else { $request = Zend_Controller_Front::getInstance()->getRequest(); $url = rtrim($request->getBaseUrl(), '/') . '/'; $url .= $helper->simple($action, $controller); } return $url; }
Settings.ini
.htaccesscodice:[development] database.type = pdo_mysql database.hostname = localhost database.username = * database.password = * database.database = phpweb20 paths.base = C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20 paths.data = C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/data paths.templates = C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/templates logging.file = C:/Programmi/Apache Software Foundation/Apache2.2/htdocs/var/www/phpweb20/data/logs/debug.log
Da cosa può dipendere il fatto che quel metodo torna una stringa vuota? Da qualche impostazione di Apache?codice:RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
Grazie per l'aiuto.

Rispondi quotando
