我想设置一个basePath
是针对给定的请求我的MVC每个组件相同。 我的意思是,当我调用这些方法我想获得相同的结果,让我们说'/spam/ham/'
:
echo $this->headLink()->prependStylesheet($this->basePath() . '/styles.css') // $this->basePath() has to be '/spam/ham/'
$this->getServiceLocator()
->get('viewhelpermanager')
->get('headLink')
->rependStylesheet($this->getRequest()->getBasePath() . '/styles.css') // $this->setRequest()->getBasePath() has to be /spam/ham/
如何设置basePath
,因为我已经发现了第一种情况, 这里是我的问题 。 顺便说一句,原来的手工没有我从答案接收到的任何信息。
现在,第二个-的basePath
已在要设置Request
:
$this->getRequest()->getBasePath()
在这里,我找到了一些答案,其实并没有在所有的工作http://zend-framework-community.634137.n4.nabble.com/Setting-the-base-url-in-ZF2-MVC-td3946284.html 。 至于说这里 StaticEventManager
被弃用所以我改变了它SharedEventManager
:
// In my Application\Module.php
namespace Application;
use Zend\EventManager\SharedEventManager
class Module {
public function init() {
$events = new SharedEventManager();
$events->attach('bootstrap', 'bootstrap', array($this, 'registerBasePath'));
}
public function registerBasePath($e) {
$modules = $e->getParam('modules');
$config = $modules->getMergedConfig();
$app = $e->getParam('application');
$request = $app->getRequest();
$request->setBasePath($config->base_path);
}
}
}
而在我的modules/Application/configs/module.config.php
我补充一下:
'base_path' => '/spam/ham/'
但它desn't工作。 这些问题是:
1)运行从来没有涉及到registerBasePath
功能。 但它必须如此。 我已经把它贴在了听众的事件init
函数。
2)当我改变SharedEventManager
只是EventManager
碰巧来到registerBasePath
功能,但一个exeption被抛出:
Fatal error: Call to undefined method Zend\EventManager\EventManager::getParam()
我该怎么办错了吗? 为什么程序运行不来的registerBasePath
功能? 如果是这样设置的唯一途径basePath
全局那该怎么做是正确的?