如何从zend框架2中的模型中捕获basePath?

时间:2013-06-05 07:54:48

标签: zend-framework2

我希望像视图一样捕获基本路径。在视图基本路径中通过使用像$this->basePath();这样的辅助函数轻松获取我想从模型中获取basepath值。

2 个答案:

答案 0 :(得分:5)

在模型中添加getter / setter:

TestModel.php

<?php
class TestModel   
{
    protected $_basePath;

    /**
     * @param string
     */
    public function setBasePath($path)
    {
        $this->_basePath = $path;
    }
}

现在,在实例化模型时注入此内容

Service Manager配置:

'factories' => array(
    'Application\Model\TestModel' => function($sm){
        $model= new \Application\Model\TestModel();
        // Just grab what we want from the view helper
        $helper = $sm->get('viewhelpermanager')->get('basePath');
        $path = $helper(); // or $helper('filenamehere') for added file path
        // Alternatively you can just use the request to get the path
        //$path = $sm->get('Request')->getBasePath();

        $model->setBasePath($path);

        return $model;
    },

如果您的模型中有服务管理器/服务定位器,您可以使用上述方法之一直接获取模型中的值。

 $path = $serviceManager->get('Request')->getBasePath();

如果你看看如何实例化ViewHelper,你会看到它首先检查配置:

$config = $serviceLocator->get('Config');
if (isset($config['view_manager']) && isset($config['view_manager']['base_path'])) {
     $basePath = $config['view_manager']['base_path'];
} 
else {
    $basePath = $serviceLocator->get('Request')->getBasePath();
}

答案 1 :(得分:0)

我不知道如何在模型中做,但在控制器中你可以这样做:

<?php
   $myUrl =  $this->url()->fromRoute('home');