2013-06-05 2 views

ответ

5

Добавить геттер/сеттер в вашей модели:

TestModel.php

<?php 
class TestModel 
{ 
    protected $_basePath; 

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

Теперь вводите это, когда вы создаете экземпляр своей модели

Service Manager Config:

'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(); 
} 
0

Я не знаю, как это сделать в модели, но в контроллере вы можете сделать это:

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

Это может очень полезно в контроллер $ URL = $ this-> GetRequest() -> getUri (); затем поймайте каждое значение, подобное этому $ schema = $ url-> getScheme(), -> getHost() и т. д. Но я хочу получить basePath непосредственно из Model Class. –