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:
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 ServerRoot e la DocumentRoot di Apache son quelle di default.
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:
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;
}
Ecco un plugin smarty relativo che lo utilizza:
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;
}
Per completezza posto anche il mio file settings.ini e le regole dell'.htaccess:
Settings.ini
codice:
[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
.htaccess
codice:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
Da cosa può dipendere il fatto che quel metodo torna una stringa vuota? Da qualche impostazione di Apache?
Grazie per l'aiuto.