bunu yapmak için daha iyi bir yol yoktur AcmeDemoBundle içinde dir, ve böylece ...
Böyle bir dir/dosya yoksa InvalidArgumentException atılır. Ayrıca
, bir konteyner tanımı, şunları kullanabilirsiniz:
my_service:
class: AppBundle\Services\Config
arguments: ["@=service('kernel').locateResource('@AppBundle/Resources/customers')"]
DÜZENLEME
Hizmetleriniz kernel bağlı gerekmez. Kullanabileceğiniz varsayılan bir symfony hizmeti vardır: file_locator. Dahili olarak Kernel :: locateResource'u kullanır, ancak testlerinizi iki kez eşleştirmeniz daha kolaydır.
hizmet tanımı
my_service:
class: AppBundle\Service
arguments: ['@file_locator']
sınıf
namespace AppBundle;
use Symfony\Component\HttpKernel\Config\FileLocator;
class Service
{
private $fileLocator;
public function __construct(FileLocator $fileLocator)
{
$this->fileLocator = $fileLocator;
}
public function doSth()
{
$resourcePath = $this->fileLocator->locate('@AppBundle/Resources/some_resource');
}
}
./web/bundles/mybundle gerçek ./mybundle/ressources/public klasöre bir sembolik, bunu elde etmek ilginizi çekebilir olabilir bunun yerine yol. –
Ayrıca, temiz bir hizmet tanımı (bunun yerine bir "Yükleyici" hizmeti) olan bir parametreden $ directoryPath ayarlamanızı öneririm, bu bir symfony yoludur. –