我有一个包含自引用映射的实体。我想在系统中添加新的类别和子类别,但我不知道如何正确地构建add表单。在Entity中生成Gets和Setter。我得到一个错误:
namespace XXX\ClassifiedsBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="XXX\ClassifiedsBundle\Repository\ClassifiedsCategoryRepository") * @ORM\Table(name="classifieds_categories") */ class ClassifiedsCategory extends ClassifiedsAbstractTaxonomy { /** * @ORM\OneToMany( * targetEntity = "Classifieds", * mappedBy = "category" * ) */ protected $classifieds; /** * @ORM\ManyToMany(targetEntity="ClassifiedsCategory", mappedBy="parent") */ private $children; /** * * @ORM\ManyToMany(targetEntity="ClassifiedsCategory", inversedBy="children") * @ORM\JoinTable(name="subCategory", * joinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="parent_id", referencedColumnName="id")} * ) */ private $parent; /** * Constructor */ public function __construct() { $this->children = new \Doctrine\Common\Collections\ArrayCollection(); $this->parent = new \Doctrine\Common\Collections\ArrayCollection(); } /** * Add classified * * @param \XXX\ClassifiedsBundle\Entity\Classifieds $classified * * @return ClassifiedsCategory */ public function addClassified(\XXX\ClassifiedsBundle\Entity\Classifieds $classified) { $this->classifieds[] = $classified; return $this; } /** * Remove classified * * @param \XXX\ClassifiedsBundle\Entity\Classifieds $classified */ public function removeClassified(\XXX\ClassifiedsBundle\Entity\Classifieds $classified) { $this->classifieds->removeElement($classified); } /** * Get classifieds * * @return \Doctrine\Common\Collections\Collection */ public function getClassifieds() { return $this->classifieds; } /** * Add child * * @param \XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $child * * @return ClassifiedsCategory */ public function addChild(\XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $child) { $this->children[] = $child; return $this; } /** * Remove child * * @param \XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $child */ public function removeChild(\XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $child) { $this->children->removeElement($child); } /** * Get children * * @return \Doctrine\Common\Collections\Collection */ public function getChildren() { return $this->children; } /** * Add parent * * @param \XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $parent * * @return ClassifiedsCategory */ public function addParent(\XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $parent) { $this->parent[] = $parent; return $this; } /** * Remove parent * * @param \XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $parent */ public function removeParent(\XXX\ClassifiedsBundle\Entity\ClassifiedsCategory $parent) { $this->parent->removeElement($parent); } /** * Get parent * * @return \Doctrine\Common\Collections\Collection */ public function getParent() { return $this->parent; } }
<pre>
namespace XXX\ClassifiedsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass
* @ORM\HasLifecycleCallbacks
*/
abstract class ClassifiedsAbstractTaxonomy {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=120, unique=true)
*/
private $name;
/**
* @ORM\Column(type="string", length=120, unique=true)
*/
private $slug;
protected $classifieds;
/**
* Constructor
*/
public function __construct()
{
$this->classifieds = new \Doctrine\Common\Collections\ArrayCollection();
// $this->children = new \Doctrine\Common\Collections\ArrayCollection();
// $this->parent = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add classifieds
*
* @param \XXX\ClassifiedsBundle\Entity\Classifieds $classifieds
* @return ClassifiedsCategory
*/
public function addClassifieds(\XXX\ClassifiedsBundle\Entity\Classifieds $classifieds)
{
$this->classifieds[] = $classifieds;
return $this;
}
/**
* Remove classifieds
*
* @param \XXX\ClassifiedsBundle\Entity\Classifieds $classifieds
*/
public function removeClassifieds(\XXX\ClassifiedsBundle\Entity\Classifieds $classifieds)
{
$this->classifieds->removeElement($classifieds);
}
/**
* Get classifieds
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCompanies()
{
return $this->classifieds;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return AbstractTaxonomy
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set slug
*
* @param string $slug
* @return AbstractTaxonomy
*/
public function setSlug($slug)
{
$this->slug = \XXX\ClassifiedsBundle\Libs\Utils::sluggify($slug);
return $this;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function preSave(){
if(null === $this->slug){
$this->setSlug($this->getName());
}
}
}
namespace XXX\AdminBundle\Form\Type; use XXX\AdminBundle\Form\Type\ClassifiedsTaxonomyType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class ClassifiedsCategoryType extends ClassifiedsTaxonomyType { public function getName() { return 'taxonomy'; } public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name', 'text', array( 'label' => 'Tytuł' )) ->add('slug', 'text', array( 'label' => 'Alias' )) ->add('parent', 'entity', array( 'class' => 'XXX\ClassifiedsBundle\Entity\ClassifiedsCategory', 'property' => 'name', 'empty_value' => 'Choose a parent category', 'required' => false, )) ->add('save', 'submit', array( 'label' => 'Zapisz' )); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'XXX\ClassifiedsBundle\Entity\ClassifiedsCategory' )); } }
FormTypeClassifiedScategoryType
需要ClassifiedScategory
的实例,这需要属性Parent
。但是当您处理从表单到控制器的请求时,formbuilder组件尝试通过实体上的set方法将输入的值设置为属性。您的实体类中缺少此set方法(setParent
)。
所以你要这样实现它:
public function setParent($parent)
{
$this->parent = $parent;
return $this;
}
我有一个包含自引用映射的实体。我想添加新的类别和子类别到系统,但我不知道如何建立正确的添加表单。获取在实体中生成,设置器在实体中生成。我得到一个错误:
我试图在Symfony2中创建一个表单,其中包含一个文本输入字段,该字段接受一个由6位数字组成的字符串,后跟一个破折号,后跟四位数字(例如123456-7890)。它确实可以工作,但我得到的HTML标记不一致,具体取决于我如何将字段添加到表单中。 这来自实体: 从表单定义中: 从树枝模板: 这就是浏览器源代码的样子——注意模式和maxlong属性: 我想使用我自己的标签,而不是默认的,所以我改变表
返回指定对象的父对象。只读。 示例 本示例可实现的功能为:显示一个文档属性的父对象名。该过程需要有一个有效的DocumentProperty 对象作参数。 Sub DisplayParent(dp as DocumentProperty) MsgBox dp.Parent.Name End Sub
基于文档:http://symfony.com/doc/2.8/form/dynamic_form_modific.html#form-events-submitted-data 我准备了动态生成表单。所有的工作都正常,但只有当我使用form添加新数据(/new)时,当我使用相同的form编辑现有数据时--不工作 “约会”的简单形式。它应该是这样工作的:用户选择客户机,然后第二个“选择”是填充正确
问题内容: 如何使用in 将 属性设置为表单? 像这样: 我希望属性设置为 日历的 此字段 __ 问题答案: 您可以从树枝模板执行此操作:
我正在尝试使用@ManyToOne和@OneToMany映射实体表。映射列位于名为“internal_plan_id”的子表中。根据要求,我不能更改名称。下面是两个实体表:父表 儿童桌: 我得到错误为:错误:关系“financial_plan_subplan”的列“internal_plan_id_internal_plan_id”不存在。 financial_subplan中用于映射的现有列名是