我遇到并发出我需要帮助的问题。我无法弄清楚为什么会这样。
我在CakePHP中创建一个组件,拦截传递给/users/login
的数据,并根据参数对其进行操作。但问题是,当数据到达时,它是空的。还要注意,它在远程机器和本地机器上运行良好。当我使用Composer
将此插件上传到另一个网站时,问题就开始发生了。我想知道问题是否是因为Composer
将插件安装在vendor
目录下。
这是我在代码startup method
public function initialize(array $config)
{
// ....
$this->Controller = $this->_registry->getController();
// ...
}
public function startup(Event $event)
{
// Here I try to get the [test] parameter that is pass in url
// http://www.domain.com/users/login?test=testing
$test = $this->Controller->request->query('test');
}
如果我尝试使用startup(Event $event)
在debug($this->Controller->request);
内打印控制器请求,我会得到以下数组:
object(Cake\Network\Request) {
params => [
'plugin' => null,
'controller' => 'Users',
'action' => 'login',
'_ext' => null,
'pass' => [],
'isAjax' => false
]
data => []
query => []
url => 'users/login'
base => ''
webroot => '/'
here => '/users/login'
trustProxy => false
[protected] _environment => [
'SCRIPT_FILENAME' => '/var/www/domain.com/website/webroot/index.php',
'SCRIPT_NAME' => '/index.php',
'REQUEST_URI' => '/users/login?test=testing',
'DOCUMENT_URI' => '/index.php',
REQUEST_URI
清楚地表明正在传递test
。
使用test
安装CakePHP时,可能导致CakePHP不接受Composer
参数?为什么params['pass'] => []
,data => []
和query => []
为空?
答案 0 :(得分:0)
经过几个小时的努力解决这个问题,我不得不带着8岁的女儿指出我正确的方向。一个简单但浪费时间,令人头疼的错误导致所有问题。该问题位于我的NGINX配置文件中。
我有以下内容:
location / {
try_files $uri $uri/ /index.php$args;
}
但我应该有以下内容:
location / {
try_files $uri $uri/ /index.php?$args;
}
因为我在?
之后省略了index.php
,所以NGINX根本没有接受在网址中传递的任何参数。
经验教训!