如何粘贴多个图像 Symfony

如何解决如何粘贴多个图像 Symfony

我有两个实体投资组合和图像关系ManyToOne,照片在数据库中我想检索它们,我得到了这个结果。 Click Here

我想在作品集列表中显示照片,并能够在项目详细信息页面上显示照片轮播。转到投资组合部分并单击链接(更多详细信息)。 https://bootstrapmade.com/demo/Arsha/ 但我有这个错误 Click Here

谢谢。

Images.Php

<?php

namespace App\Entity;

use App\Repository\ImagesRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=ImagesRepository::class)
 */
class Images
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=Portfolio::class,inversedBy="images")
     * @ORM\JoinColumn(nullable=false)
     */
    private $portfolios;

    /**
     * @ORM\Column(type="string",length=255)
     */
    private $nom;

    
    public function getId(): ?int
    {
        return $this->id;
    }

    public function getPortfolios(): ?Portfolio
    {
        return $this->portfolios;
    }

    public function setPortfolios(?Portfolio $portfolios): self
    {
        $this->portfolios = $portfolios;

        return $this;
    }

    public function getNom(): ?string
    {
        return $this->nom;
    }

    public function setNom(string $nom): self
    {
        $this->nom = $nom;

        return $this;
    }
}

Portfolio.php


   <?php

namespace App\Entity;

use App\Repository\PortfolioRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;


/**
 * @ORM\Entity(repositoryClass=PortfolioRepository::class) 
 */
class Portfolio
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string",length=255)
     */
    private $titre;

    /**
     * @ORM\Column(type="string",length=255,nullable=true)
     */
    private $web;

    /**
     * @ORM\Column(type="string",nullable=true)
     */
    private $description;

    /**
     * @ORM\Column(type="text",nullable=true)
     */
    private $contenu;
    
    /**
     * @Gedmo\Slug(fields={"titre"})
     * @ORM\Column(type="string",length=255)
     */
    private $slug;

    /**
     * @ORM\ManyToOne(targetEntity=Client::class,inversedBy="portfolios")
     */
    private $clients;


    /**
     * @ORM\ManyToMany(targetEntity=Categorie::class,inversedBy="portfolios")
     */
    private $categories;

    /**
     * @var \DateTime $created_at
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(type="datetime")
     */
    private $created_at;

    /**
     * @var \DateTime $updated_at
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime",nullable=true)
     */
    private $updated_at;

    /**
     * @ORM\OneToMany(targetEntity=Images::class,mappedBy="portfolios",orphanRemoval=true,cascade={"persist"})
     */
    private $images;

    public function __construct()
    {
        $this->categories = new ArrayCollection();
        $this->images = new ArrayCollection();
    }


    public function __toString()
    {
        return $this->titre;
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getTitre(): ?string
    {
        return $this->titre;
    }

    public function setTitre(string $titre): self
    {
        $this->titre = $titre;

        return $this;
    }

    public function getWeb(): ?string
    {
        return $this->web;
    }

    public function setWeb(?string $web): self
    {
        $this->web = $web;

        return $this;
    }

    public function getDescription(): ?string
    {
        return $this->description;
    }

    public function setDescription(?string $description): self
    {
        $this->description = $description;

        return $this;
    }

    public function getContenu(): ?string
    {
        return $this->contenu;
    }

    public function setContenu(?string $contenu): self
    {
        $this->contenu = $contenu;

        return $this;
    }

    
    public function getSlug(): ?string
    {
        return $this->slug;
    }


    /**
     * @return Collection|Categorie[]
     */
    public function getCategories(): Collection
    {
        return $this->categories;
    }

    public function addCategory(Categorie $category): self
    {
        if (!$this->categories->contains($category)) {
            $this->categories[] = $category;
        }

        return $this;
    }

    public function removeCategory(Categorie $category): self
    {
        $this->categories->removeElement($category);

        return $this;
    }

    public function getCreatedAt(): ?\DateTimeInterface
    {
        return $this->created_at;
    }   

    public function getUpdatedAt(): ?\DateTimeInterface
    {
        return $this->updated_at;
    }    

    public function getClients(): ?Client
    {
        return $this->clients;
    }

    public function setClients(?Client $clients): self
    {
        $this->clients = $clients;

        return $this;
    }

    /**
     * @return Collection|Images[]
     */
    public function getImages(): Collection
    {
        return $this->images;
    }

    public function addImage(Images $image): self
    {
        if (!$this->images->contains($image)) {
            $this->images[] = $image;
            $image->setPortfolios($this);
        }

        return $this;
    }

    public function removeImage(Images $image): self
    {
        if ($this->images->removeElement($image)) {
            // set the owning side to null (unless already changed)
            if ($image->getPortfolios() === $this) {
                $image->setPortfolios(null);
            }
        }

        return $this;
    }
}

Twig 投资组合列表 我找到了部分问题的解决方案,我可以检索项目列表的照片,但在详细信息页面中我没有错误但图像没有显示。

<div class="row portfolio-container">
            {% for portfolio in portfolios %}
            <div class="col-lg-4 col-md-6 portfolio-item filter-app">
                <div class="portfolio-wrap">
                    <img src="{{asset('assets/img/portfolio/' ~ portfolio.images[0].nom)}}" class="img-fluid" alt="">
                   
                    <div class="portfolio-info">
                        <h4>{{ portfolio.titre }}</h4>
                        {% for categorie in portfolio.categories %}
                        <p>{{ categorie.nom }}</p>
                        {% endfor %}
                        <div class="portfolio-links">
                            <a href="{{asset('assets/img/portfolio/portfolio-1.jpg')}}" data-gallery="portfolioGallery"
                                class="portfolio-lightbox" title="App 1"><i class="bx bx-plus"></i></a>
                                
                            <a href="{{ path('portfolio_detail',{'slug': portfolio.slug}) }}" title="Plus Details"><i class="bx bx-link"></i></a>
                        </div>
                    </div>
                </div>
            </div>
            {% endfor %}

Twig 组合详细信息

<div class="col-lg-8">
          <div class="portfolio-details-slider swiper-container">
           
            <div class="swiper-wrapper align-items-center">
              {% for images in portfolio.images  %}
              <div class="swiper-slide">
                <img src="{{asset('assets/img/portfolio/' ~ images.nom)}}" alt="">
              </div>
              
              {% endfor %}             
                     
            </div>
           
            <div class="swiper-pagination"></div>
          
          </div>
        </div>

控制器

 <?php

namespace App\Controller;

use App\Entity\Portfolio;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class AccueilController extends AbstractController
{
    /**
     * @Route("/",name="accueil")
     */
    public function index(): Response
    {
        //lister portfolio
        $portfolios = $this->getDoctrine()->getRepository(Portfolio::class)->findBy(
            [],['created_at' => 'desc']
        );
        return $this->render('accueil/index.html.twig',[
            'portfolios' => $portfolios,]);
    }

    
    /**
     * @Route("/portfolio/{slug}",name="portfolio_detail",methods={"GET"})     
     */
    public function detail($slug): Response
    {
          // On récupère l'article correspondant au slug
          $portfolio = $this->getDoctrine()->getRepository(Portfolio::class)->findOneBy(['slug' => $slug]);
        return $this->render('accueil/detail.html.twig',[
            'portfolio' => $portfolio,]);
    }

}

   

解决方法

我的代码有效,希望可以帮助到其他人。

我给你留了一个链接,虽然这是法语,但它很棒。

https://nouvelle-techno.fr/actualites/live-coding-upload-dimages-multiples-avec-symfony-4-et-5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res