我是phalcon框架的新手,但看起来很棒!
最近我决定在我的项目中使用资产管理器但是出现了问题。 当我尝试输出添加的资产时,会打印前面带有“ /index.php ”的路径......
我将此代码放入控制器的indexAction:
$this->assets
->collection("commonJs")
->addJs('js/draggable.js')
->addJs('js/common.js')
->addFilter( new Phalcon\Assets\Filters\Jsmin() );
$this->assets
->collection('commonCss')
->addCss('css/material-icons.css',true,false)
->addcss('css/common.css',true,true)
->addFilter(new Phalcon\Assets\Filters\Cssmin());
并使用内部伏特来输出资产:
<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的新手,我不知道我做错了什么,以及如何在输出路径中删除prepended index.php。
有人可以帮我解决这个问题吗?
仅供参考,我正在使用nginx和php7.1&amp; 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;
}
}
答案 0 :(得分:0)
在您的Nginx配置中,尝试将此行fastcgi_index /index.php;
更改为fastcgi_index /;
。
答案 1 :(得分:0)
我也有这个问题,而不是修改webserver配置,我编辑了config.php baseUri条目,如下所示:
在:
'baseUri' => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]),
后:
'baseUri' => preg_replace(['/public([\/\\\\])index.php$/', '@/index.php@i'], '', $_SERVER["PHP_SELF"]),
所以基本上只是确保从PHP_SELF字段中删除单个/index.php
答案 2 :(得分:0)
要从生成的URL中删除index.php,请在baseUri
上更改config.php
。
旧版:'baseUri' => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]),
新功能:'baseUri' => preg_replace(['/public([\/\\\\])index.php$/', '@/index.php@i'], '/', $_SERVER["PHP_SELF"]),
radonthetyrant 已经提到了类似的答案,但是生成了 projectnamecontroller URL。但是我需要 project / controller 。所以我更改为此配置。
答案 3 :(得分:0)
我这样做了:
$headerJs = $this->assets->collection('headerJs')->setPrefix('/')->setLocal(false);
.....
$headerJs->addJs('js/library/jquery.min.js');