我是 phalcon 框架的新手,但它看起来很棒!
最近,我决定在我的项目中使用资源管理器,但出现了一个问题。当我尝试输出添加的资产时,它会打印前面带有"/index.php"的路径...
我将这段代码放入控制器的 indexAction 中:
$this->assets
->collection("commonJs")
->addJs('js/draggable.js')
->addJs('js/common.js')
->addFilter( new PhalconAssetsFiltersJsmin() );
$this->assets
->collection('commonCss')
->addCss('css/material-icons.css',true,false)
->addcss('css/common.css',true,true)
->addFilter(new PhalconAssetsFiltersCssmin());
并使用此内部 Volt 来输出资产:
<head>
....
{{ assets.outputJs('commonJs')}}
</head>
<body>
...
{{ assets.outputJs('commoCss')}}
</body>
但是打印的输出似乎有点奇怪:
我认为它应该像打印这样的路径
<link rel="stylesheet" type='text/css' href='css/common.css'>
或
<script type='text/javascript' src='js/common.js'>
但它实际上输出如下:
<link rel="stylesheet" type='text/css' href='/index.phpcss/common.css'>
..
<script type='text/javascript' src='/index.phpjs/common.js'>
或者如果我在 addJs 中设置路径,例如"/js/..."而不是"js/..."则输出为:
<script type='text/javascript' src='/index.php/js/...'>
我是 phalcon 的新手,我不知道我做错了什么以及如何在输出路径中删除前置索引.php。
有人可以帮我吗?
仅供参考,我将nginx与php7.1和fpm一起使用,我的nginx-site.conf如下所示,这与phalcon文档几乎相同:
server {
listen 80;
root /var/www2/public;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name tpnew.dev;
error_log /usr/local/var/log/nginx/newtp.error.log; #debug;
log_not_found off;
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
# try_files $uri $uri/ @rewrite;
}
location ~ .php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000; # php71
fastcgi_index /index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SERVER_NAME $server_name;
}
location ~ /.ht {
deny all;
}
}
我也遇到了这个问题,我没有修改 Web 服务器配置,而是像这样编辑了 config.php baseUri 条目:
以前:
'baseUri' => preg_replace('/public([/\\])index.php$/', '', $_SERVER["PHP_SELF"]),
后:
'baseUri' => preg_replace(['/public([/\\])index.php$/', '@/index.php@i'], '', $_SERVER["PHP_SELF"]),
所以基本上只是确保,单个/index.php 也从PHP_SELF字段中剥离
在 Nginx 配置中,尝试将此行fastcgi_index /index.php;
更改为 fastcgi_index /;
。
要从生成的 URL 中删除索引.php,请在 config.php
上更改baseUri
。
旧:'baseUri' => preg_replace('/public([/\\])index.php$/', '', $_SERVER["PHP_SELF"]),
新增:'baseUri' => preg_replace(['/public([/\\])index.php$/', '@/index.php@i'], '/', $_SERVER["PHP_SELF"]),
radonthetyrant已经提到了类似的答案,但生成项目名称控制器URL。 但我需要项目/控制器。 所以我改成了这个配置。
我这样做了:
$headerJs = $this->assets->collection('headerJs')->setPrefix('/')->setLocal(false);
.....
$headerJs->addJs('js/library/jquery.min.js');