symfony 相关问题

Symfony既指用于构建Web应用程序的PHP框架,也指构建框架的一组组件。此标记指的是当前支持的主要版本2.x,3.x和4.x.或者,您可以使用相应的标记指定确切的版本。此标记不应用于有关Symfony 1.x的问题。请改用Symfony1标签。

sympony & git安装处理(git错误)

Symphony 安装过程对我来说遇到了障碍。 我安装了Git,但即使完成设置后,它似乎也无法识别它。 我已尝试重新安装它,但问题仍然存在。 是

回答 1 投票 0

Symfony2 仍然无法在我的控制器上工作

我是 symfony 的新手,几天来我一直在尝试实现多图像上传。我将实体 Image 和实体 CollecImages 与 oneToMany 关系一起使用。我成功地做到了这要归功于...

回答 3 投票 0

如何在 TYPO3 / Symfony CLI 中设置 Extbase 存储库的语言?

我定期开发处理多种语言的导入/导出命令。我总是使用 Extbase 存储库和模型,因此我不必手动连接记录或执行其他粗略的操作。 我...

回答 1 投票 0

如何使用学说调用带有输出参数的Oracle存储过程?

我一直在使用 Oracle 中的教义调用存储过程,执行以下操作: $sql = "CALL namespace.my_proc(".$data_source_id.", to_date('".$account_period_start."', 'YYYY-MM-DD'),'".$updated_b...

回答 3 投票 0

Symfony 多个 IsGranted 在同一控制器上不起作用

我有一个控制器,在该控制器上创建了 2 条路由: #[Route('/announcement/create', name: 'app_admin_restock_announcement_create'), IsGranted(RestockVoter::CREATE_RESTOCK)] #[路线('/公告...

回答 1 投票 0

Symfony2动态分配attr到表单字段

我希望能够动态设置表单的 required=true/false 选项或数组(...其他东西...,'class' => 'hidden')场地。 上下文如下:...

回答 2 投票 0

如何使用 symfony 包中的路由?

Symfony 5.4 版和 PHP 7.4 版。* 在普通的 Symfony 项目中,我可以创建一个带有路由(注释)的控制器,并且它工作得很好。现在我创建了一个捆绑包,并将其放入测试项目中...

回答 1 投票 0

Symfony 轻松管理如何将 DateTimeField 与当前日期进行比较

我第一次使用简单的管理包为项目编写后端,但在修改 CRUD 控制器以满足我的需求时遇到了困难。 我有一个借款实体,有经验...

回答 1 投票 0

如何在 React + Symfony 6 后端表单中链接两个表?

我有一个带有 Symfony 6.4 后端的 React Form,我正在尝试将两个表链接在一起(Tiers 和 GroupeDdo),其中每个 Tiers 有一个 GroupeDdo。这是我的 Tiers.php : 我有一个带有 Symfony 6.4 后端的 React Form,我试图将两个表链接在一起(Tiers 和 GroupeDdo),其中每个 Tiers 有一个 GroupeDdo。这是我的 Tiers.php : <?php namespace App\Entity; use App\Repository\TiersRepository; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: TiersRepository::class)] class Tiers { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\ManyToOne(inversedBy: 'tiers')] private ?GroupeDdo $groupe_ddo = null; [...] public function getId(): ?int { return $this->id; } public function getGroupeDdo(): ?GroupeDdo { return $this->groupe_ddo; } public function setGroupeDdo(?GroupeDdo $groupe_ddo): self { $this->groupe_ddo = $groupe_ddo; return $this; } } 这是我的 GroupeDdo.php : <?php namespace App\Entity; use App\Repository\GroupeDdoRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: GroupeDdoRepository::class)] class GroupeDdo { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $groupe_ddo_nom = null; #[ORM\OneToMany(targetEntity: Ddo::class, mappedBy: 'groupe_ddo')] private Collection $ddos; #[ORM\OneToMany(targetEntity: Tiers::class, mappedBy: 'groupe_ddo')] private Collection $tiers; #[ORM\OneToMany(targetEntity: User::class, mappedBy: 'groupe_ddo')] private Collection $users; public function __construct() { $this->ddos = new ArrayCollection(); $this->tiers = new ArrayCollection(); $this->users = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getGroupeDdoNom(): ?string { return $this->groupe_ddo_nom; } public function setGroupeDdoNom(string $groupe_ddo_nom): static { $this->groupe_ddo_nom = $groupe_ddo_nom; return $this; } /** * @return Collection<int, Ddo> */ public function getDdos(): Collection { return $this->ddos; } public function addDdo(Ddo $ddo): static { if (!$this->ddos->contains($ddo)) { $this->ddos->add($ddo); $ddo->setGroupeDdoId($this); } return $this; } public function removeDdo(Ddo $ddo): static { if ($this->ddos->removeElement($ddo)) { // set the owning side to null (unless already changed) if ($ddo->getGroupeDdoId() === $this) { $ddo->setGroupeDdoId(null); } } return $this; } /** * @return Collection<int, Tiers> */ public function getTiers(): Collection { return $this->tiers; } public function addTier(Tiers $tier): static { if (!$this->tiers->contains($tier)) { $this->tiers->add($tier); $tier->setGroupeDdoId($this); } return $this; } public function removeTier(Tiers $tier): static { if ($this->tiers->removeElement($tier)) { // set the owning side to null (unless already changed) if ($tier->getGroupeDdoId() === $this) { $tier->setGroupeDdoId(null); } } } } 这是我的表格的完整版本: import React, { useState, useEffect } from 'react'; import { Formik, Form, Field, ErrorMessage } from 'formik'; import { useAuth } from '../context/AuthContext'; import Cookies from 'js-cookie'; // L'interface Tiers définit les champs de la table Tiers et leur types interface Tiers { tiers_raison_sociale: string | null; tiers_intitule: string | null; tiers_heures_ouverture: { [key: string]: { ouverture: string; fermeture: string }[]; } | null; tiers_telephone: string | null; tiers_courriel: string | null; tiers_rdv: boolean | null; groupe_ddo_id: number | null; tiers_adresse: string | null; tiers_ville: string | null; tiers_cp: string | null; tiers_pays: string | null; } // L'interface GroupeDDo définit les champs de la table GroupeDdo et leur types interface GroupeDDO { id: number; groupeDdoNom: string; } const TiersForm: React.FC = () => { //Utilisation d'un useState de l'API const [apiError, setApiError] = useState(''); const [groupeDDOList, setGroupeDDOList] = useState<GroupeDDO[]>([]); const [selectedGroupeId, setSelectedGroupeId] = useState<number | null>(0); const { isAuthenticated } = useAuth(); if (!isAuthenticated) { window.location.href = '/'; } useEffect(() => { const fetchGroupeDDOList = async () => { try { const response = await fetch('http://127.0.0.1:8000/api/liste-groupe-ddo'); if (!response.ok) { throw new Error('Erreur lors de la récupération des données des groupes'); } const data = await response.json(); setGroupeDDOList(data); } catch (error) { console.error(error); } }; fetchGroupeDDOList(); }, []); //Valeur initiales du formulaire const initialValues: Tiers = { tiers_raison_sociale: '', tiers_intitule: '', tiers_heures_ouverture: { lundi: [{ ouverture: '', fermeture: '' }], mardi: [{ ouverture: '', fermeture: '' }], mercredi: [{ ouverture: '', fermeture: '' }], jeudi: [{ ouverture: '', fermeture: '' }], vendredi: [{ ouverture: '', fermeture: '' }], samedi: [{ ouverture: '', fermeture: '' }], dimanche: [{ ouverture: '', fermeture: '' }], }, tiers_telephone: '', tiers_courriel: '', tiers_rdv: false, groupe_ddo_id: null, tiers_adresse: '', tiers_ville: '', tiers_cp: '', tiers_pays: '', }; const onSubmit = async (values: Tiers) => { try { if (!isAuthenticated) { throw new Error('Vous devez être connecté pour effectuer cette action'); } const token = Cookies.get('authToken'); const selectedGroupe = groupeDDOList.find(groupe => groupe.id === (selectedGroupeId as number)); if (!selectedGroupe) { throw new Error('Le groupe selectionné est introuvable'); } if (selectedGroupe) { values.groupe_ddo_id = selectedGroupe.id; } const response = await fetch('http://127.0.0.1:8000/api/create/tiers', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify(values), }); if (!response.ok) { throw new Error('Erreur lors de la création de la société'); } // Réinitialiser les champs du formulaire après la soumission réussie setApiError(''); window.location.href = '/'; } catch (error) { setApiError('Impossible d\'envoyer le formulaire'); } }; // Conditions de chaque champ du formulaire const validate = (values: Tiers) => { const errors: Partial<Tiers> = {}; // Si le code de société n'est pas entré, écrire qu'il est requis if (!values.tiers_raison_sociale) { errors.tiers_raison_sociale = 'Raison sociale de la société requise'; } return errors; }; return ( <> {groupeDDOList.length === 0 ? ( <p>Chargement en cours...</p> ) : ( <Formik {...{ initialValues, onSubmit, validate }} > {({ isSubmitting, values, handleChange }) => ( <Form> <fieldset> <legend>A Quel Groupe de Société doit-il être lié ?</legend> <Field as="select" name="groupe_ddo_id" label="Groupe Société d'un tiers" value={selectedGroupeId} onChange={(e: React.ChangeEvent<HTMLSelectElement>) => { // const selectedValue = (e.target as HTMLSelectElement).value; const selectedValue = parseInt(e.target.value); // const selectedGroupe = selectedGroupeId ? groupeDDOList.find(groupe => groupe.id === parseInt(selectedValue)) : null; // if (selectedGroupe) { setSelectedGroupeId(selectedValue); // } }}> {groupeDDOList.map((groupe, index) => ( <option key={index} value={groupe.id}> {groupe.groupeDdoNom} </option> ))} </Field> <ErrorMessage name="id" component="div" className="error" /> {apiError && <div className="error">{apiError}</div>} <br /> <button type="submit" disabled={isSubmitting}> {isSubmitting ? 'Création en cours...' : 'Créer Tiers'} </button> </fieldset> </Form> )} </Formik > )} </> ); }; export default TiersForm; 这里的问题是,当我尝试获取 GroupeDdo 列表以创建选择字段时,我看不到它们,并显示错误:警告:未定义的数组键“groupe_ddo_id”。我应该怎么做才能获取我所有的 GroupeDdo 并确保它是数据库中 GroupeDdo 的值? 谢谢! 来自我的控制器,我使用 findAll 函数来获取所有内容。但在这样做的过程中,我也试图获取集合,这不是我想要的,因为其中一个集合是 Tiers,这正是我试图使用表单创建的。 因此,我创建了一个函数,仅从 GroupeDdo 实体获取我需要的内容。

回答 1 投票 0

语法错误第 0 行,第 70 栏:错误:预期 Doctrine\ORM\Query\Lexer::T_INSTANCE,得到“.”

我想发出请求,从我的表中检索包含名为“stat”的属性的元素。该属性是一个鉴别器。当我根据鉴别器检索元素时,如

回答 1 投票 0

Symfony Doctrine 分页

我有实体用户,例如计数 90355,我需要获得 100 个用户并与该用户执行一些逻辑操作。然后接下来 100 个使用,这是我的,但是当我找到所有我的服务器下拉列表时如何解决这个问题

回答 4 投票 0

在Twig中显示Flash消息的正确方式

我有一个注册表单,提交后,显示闪现消息并重定向到特定页面。如果没有发现错误,我的闪现成功消息工作正常。但是,错误消息不会显示,当...

回答 3 投票 0

Symfony 7:模板渲染期间抛出异常(“调用未定义的方法 Twig\Extension\CoreExtension::dateConverter()”)

在一个 symfony 项目上,这个 twig 代码会抛出一个错误: {{ user.createdAt|format_datetime('full', 'none', locale='fr_FR') }} // error : 在渲染临时对象期间抛出异常...

回答 1 投票 0

什么可以防止找不到“//”的路由

所以我很难找出问题所在。我注意到错误日志中未找到“//”。 所以我试图理解为什么会这样,以及是否有一种方法可以捕获它并在 sy 之前重定向...

回答 1 投票 0

从类型twig模板中的FormType访问变量

我创建了一个像这样的自定义表单类型: PositioningFlashType 类扩展 AbstractType { 噗...

回答 1 投票 0

如何在专用包中引用自定义字段类型的twig?

我(仍然)尝试将 http://xoxco.com/clickable/jquery-tags-input 引入专用包中。到目前为止,我有一个作为文本子级的类型和一个转换逗号分隔的数据转换器

回答 1 投票 0

将 symfony 项目从笔记本电脑复制到另一台笔记本电脑

我有一个 symfony 项目,位于我的 Laragon www 文件夹下。我想复制它以供我的同事在他的笔记本电脑上使用。 当我们简单地将文件夹复制/粘贴到他的本地时,它不会...

回答 1 投票 0

使用 Symfony 6.4 进行 JWT 身份验证

我正在尝试使用 JWT 通过 Symfony 创建身份验证表单。我安装了安全包,创建了用户实体,然后安装了 LexikJWTAuthenticationBundle。之后,我配置...

回答 1 投票 0

如何像格式化数组一样使用独白记录多行条目?

我正在尝试在 symfony 中使用 monolog 记录一个数组。 $logger = $this->get('logger'); $logger->info(=print_R($user,true)); 我得到的输出未格式化为 print_r 预期的格式。我...

回答 3 投票 0

Symfony - 运行命令“lexik:jwt:generate-keypair”时抛出错误

我正在尝试生成一组密钥对,用于对要生成的 JSON Web 令牌进行编码。 但我收到这个错误: php bin/console lexik:jwt:生成密钥对 [严重] 抛出错误...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.