Php 条令装置和Symfony2请求范围
我想为使用Doctrine2和symfony2.2的项目创建文章装置 以下是如何创建文章: 它们不直接链接到图像,而是包含图像名称。例如,在保存文章之前,myPhp 条令装置和Symfony2请求范围,php,symfony,doctrine-orm,assetic,Php,Symfony,Doctrine Orm,Assetic,我想为使用Doctrine2和symfony2.2的项目创建文章装置 以下是如何创建文章: 它们不直接链接到图像,而是包含图像名称。例如,在保存文章之前,myArticleManager解析文章文本,查找图像名称,在数据库中搜索这些图像,并用真实图像路径替换图像标记部分 This is article content typed in form and it contains an ![Image description](Here is My Awesome Image Name) 然后,当
ArticleManager
解析文章文本,查找图像名称,在数据库中搜索这些图像,并用真实图像路径替换图像标记部分
This is article content
typed in form
and it contains an
![Image description](Here is My Awesome Image Name)
然后,当提交表单并调用ArticleManager->save($article)
时,ArticleManager将按real fileWEB路径更改图像标记:
This is article content
typed in form
![Image description](/path/to/my_awesome_image.png)
问题:ArticleManager
依赖于Assetic assets helper
服务来构建完整的web映像路径,该服务位于请求
范围内。另一方面,fixture
是从CLI运行的,因此它们无法访问该服务,这使得我在加载文章fixture时无法获取图像路径
有谁能给我推荐一种最不粗俗的解决这个问题的方法吗?好的,多亏@cheesemacfly的评论,我挖掘了一下,意识到由于我的图像存储在公共文件夹中,我根本不必使用assetic 我没有使用它来创建图像URL,而是将
路由器
服务注入我的ArticleManager
并以以下方式生成URL:
$baseRoute = $this->router->getContext()->getBaseUrl();
$appFiles = array('/app.php', '/app_dev.php');
$baseRoute = str_replace($appFiles, '', $baseRoute);
$imageDocumentRoute = $baseRoute . '/' . $imageDocument->getWebPath();
imageDocument->getWebPath()
返回附加到保存图像的子文件夹的图像名称。例如,subweb/path/imagename.png
尝试使用assetic时会收到什么异常消息?这些图片存储在哪里?在公用文件夹中?@piotrekkr我得到“[Symfony\Component\DependencyInjection\Exception\InactiveScopeException]您无法创建非活动范围(“请求”)的服务(“piflex\u website.article.manager”)。”@cheesemacfly是的,我将它们存储在web/configurable/path
文件夹下。你的目标是什么?有没有一种不用$request就能找到web路径的方法?请注意,该网站可以驻留在子目录中,所以我不能只使用像“/configurable/path/image.png”这样的绝对路径