首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在自定义存储库中注入类- Symfony 2.7

如何在自定义存储库中注入类- Symfony 2.7
EN

Stack Overflow用户
提问于 2017-05-16 18:23:59
回答 1查看 302关注 0票数 1

我有自定义仓库类,我必须在其中注入类,帮助我上传文件,并在需要时删除文件。我扩展了EntityRepository构造函数,但我不知道如何在自定义存储库类中添加第三个参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    class NewRepository extends EntityRepository
    {

        protected $fileUploader;



        public function __construct(EntityManager $em, Mapping\ClassMetadata $class,FileUploader $fileUploader)
        {
            parent::__construct($em, $class);
        }

        public function create($data, Item $item = null)
        {
            $em = $this->getEntityManager();
            if(!$item) $item = new Item();

            if(isset($data['file'])) {
                $image = $this->fileUploader->setFile($data['file'])->uploadFile();
                $data['filename'] = $image['filename'];
                $data['image_url'] = $image['file_url'];
            }

            $item->setTitle($data['title']);
            $item->setDescription($data['description']);

            $em->persist($item);
            $em->flush($item);

            return $item;
        }

    }

我总是收到传递给构造函数的第三个参数为空的错误。

EN

回答 1

Stack Overflow用户

发布于 2017-05-19 12:57:11

从2.4版开始,Doctrine使用RepositoryFactory实例化存储库,并为您提供DefaultRepositoryFactory。为了能够向您的存储库中注入额外的依赖项,您需要使用您自己的上述工厂实现(为简洁起见,我省略了所有use语句):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class YourRepositoryFactory implements RepositoryFactory
{
    private $fileUploader;

    public function __construct(FileUploader $fileUploader)
    {
        $this->fileUploader = $fileUploader;
    }

    public function getRepository(EntityManagerInterface $entityManager, $entityName)
    {
        $repositoryHash = $entityManager->getClassMetadata($entityName)->getName() . spl_object_hash($entityManager);
        if (isset($this->repositoryList[$repositoryHash])) {
            return $this->repositoryList[$repositoryHash];
        }
        return $this->repositoryList[$repositoryHash] = $this->createRepository($entityManager, $entityName);
    }

    private function createRepository(EntityManagerInterface $entityManager, $entityName)
    {
        /* @var $metadata \Doctrine\ORM\Mapping\ClassMetadata */
        $metadata            = $entityManager->getClassMetadata($entityName);
        $repositoryClassName = $metadata->customRepositoryClassName
            ?: $entityManager->getConfiguration()->getDefaultRepositoryClassName();

        switch ($repositoryClassName) {
            case NewRepository::class:
                return new $repositoryClassName($entityManager, $metadata, $this->fileUploader);
            default:
                return new $repositoryClassName($entityManager, $metadata);
        }
    }
}

以您喜欢的方式将您的工厂注册为服务后,您需要使用以下命令调整doctrine配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
doctrine:
    orm:
        repository_factory: name.of.your.factory.service

你就可以走了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44008937

复制
相关文章
多个checkbox实现单选的checkbox
将多个checkbox添加进一个list中,设置监听,当有一个checkbox被选中时,循环list ,将其他checkbox的选中状态设置为false:
全栈程序员站长
2022/08/30
1.8K0
判断 checkbox 是否选中以及 设置checkbox选中
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154601.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
6K0
radio与checkbox
最近一直在学习Javascript与asp.net MVC4,每天都在跟着书学习。这样总感觉自己看的很抽象,没有点实际的意义。而且,每次看的东西很容易忘记,所以打算在这里记录自己的学习笔记。 Javascript已经看了不少天了,本文主要讲述的是radio与checkbox。 1.radio radio又称单选框,它是html表单中的单选按钮。通常单选按钮是成组出现的,是互斥的,每次只能选取一个。当点击按钮的时候,就会触发onclick事件。通过属性checked判断按钮是否被选中。声明的语法如下:<inp
水击三千
2018/02/27
2.2K0
checkbox选中和不选中的值_设置checkbox选中状态
1.设置选中:$(“#hasApply”).prop(“checked”,true);
全栈程序员站长
2022/08/03
7.8K0
jquery 读取checkbox
html的checkbox控件 是否选中要看有没有checked属性 有就是选中 无论值是什么
ApacheCN_飞龙
2019/02/15
1.3K0
checkbox实现单选
(function(){ (’[name=“XYDJLHFJ”][type=“checkbox”]’).each(function(){ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: … if((this).attr(‘checked’)){ ( ′ [ n a m e = &quot; X Y D J L H F J &quot; ] [ t y p e = &quot; c h e c k b o x &quot; ] [ n a m e = ′ + (&#x27;[name=&quot;XYDJLHFJ&quot;][type=&quot;checkbox&quot;][name=&#x27;+ (′[name=“XYDJLHFJ“][type=“checkbox“][name=′+(this).attr(“name”)+’]’).removeAttr(‘checked’);
全栈程序员站长
2022/09/02
1.1K0
input:checkbox标签
新建 html 文件 16-checkbox.html ,编写下方程序,运行看看效果吧
鹤川
2023/03/21
1.1K0
checkbox 全选和取消
//全选 $("#checkall").click(function () { if (this.checked) { //如果当前点击的多选框被选中 $('input[type=checkbox][name=checkitems]').prop("checked", true); } else { $('i
纯粹是糖
2018/03/14
1.8K0
ElementUI Checkbox 多选框
https://element.eleme.io/#/zh-CN/component/checkbox
py3study
2021/03/12
2.9K0
ElementUI Checkbox 多选框
[WPF 自定义控件]创建包含CheckBox的ListBoxItem
不过它用起来不怎么样,与其这样还不如参考UWP的ListView实现,而且动画效果也很好看:
dino.c
2020/02/21
2.9K0
[WPF 自定义控件]创建包含CheckBox的ListBoxItem
jquery获取checkbox是否选中
在使用jquery的过程中,发现了一个比较特别的属性,那就是 input标签的 checkbox的 是否选中状态
执笔记忆的空白
2020/12/25
2.8K0
jQuery 实现checkBox全选效果
html/jsp代码: <div class="dlnm"> <input type="checkbox" class="omipt" value="111"> 111 <input type="checkbox" class="omipt" value="222"> 222 <input type="checkbox" class="omipt" value="333"> 333 <input type="checkbox" class="omipt" value=
执笔记忆的空白
2020/12/25
3.5K0
小程序checkbox调整大小
.cb{ transform: scale(0.6,0.6); } <view> <label class="lab" for="box1"> <checkbox value="v1" checked class="cb"/>复选框 </label> </view>
苦咖啡
2018/04/28
4.1K0
checkbox的常见问题
1、在使用checkbox时,最好不要阻止他原有的事件,要利用它原有的事件进行控制 2、尽量使用label for属性,不要对input元素的父元素或者input本身绑定事件,这样不能有效的避免冒泡事件, 3、如果想扩大选择区,可以选择扩大label的高度和宽度,不要选择扩大父元素的宽高。 4、如果某一个checkbox不能选中,而本身js又没有对他做任何事件托管,那就要查一下,id是否重复了。 5、checkbox的样式尽量不要自己修改,存在很多兼容性问题,尽量使用插件来改变样式,比如icheck
windseek
2018/06/14
9980
vue checkbox list 增删改
<template>   <div class=”hello”>     <div style=”display:flex;”>       <span @click=”test($event,index);cur=index” v-for=”(item,index) in obj” :key=”item.name” >         <input v-model=”list” type=”checkbox” :label=’item.name’ :value=”item.name” >         
kirin
2021/01/07
5410
checkbox选中和不选中 jqu_jquery怎么设置checkbox不选中?
1、设置不选中:$(“#my-checkbox”).prop(“checked”,false);
全栈程序员站长
2022/09/14
3.7K0
WPF 修改CheckBox样式
它包含一个复选框(ToggleButton)和一个文(Content),改写它,要做的就是修改它们的模板了~
zls365
2021/04/02
2.7K0
checkbox选中和不选中 jqu_jquery checkbox 选中不选中
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
全栈程序员站长
2022/09/07
2.9K0
RadioButton、CheckBox与ToggleButton
1.RadioButton RadioButton被称作为单选框,通常都是以组的形式出现,可以在一组控件中选择一个。 RadioButton的使用首先需要加入<RadioGroup/>,在这个组中,我们进行单选按钮的声明。 1 <RadioGroup 2 android:id="@+id/radioGroup" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_c
水击三千
2018/02/27
1K0
点击加载更多

相似问题

checkbox mvc验证

10

MVC checkBox值

13

MVC Html.Checkbox

218

MVC CheckBox更改事件

12

ASP.NET MVC CheckBox

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文