पूर्णता के लिए पूर्ण उदाहरण के नीचे खोजें।
आपको वांछित रूप का प्रतिनिधित्व करने वाला एक नया मॉडल बनाना चाहिए। मुद्दा यह है कि आप शायद सिद्धांत को प्रभावित नहीं करना चाहते हैं (उदाहरण के लिए। सिद्धांत देखें: स्कीमा: अद्यतन आदेश)। यह ऐसी इकाई के लिए एक टेबल बनाने का प्रयास कर सकता है जो वास्तव में अस्तित्व में नहीं है। इससे बचने के लिए, बस मॉडल मॉडल (\ src \ Acme \ Bundle \ DemoBundle \ Model \ TaskList.php) के तहत अपनी मॉडल श्रेणी डालें।
मान लें कि निम्नलिखित आपके TaskType प्रपत्र वर्ग है:
<?php
namespace Acme\Bundle\DemoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class TaskType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('id', null, array('read_only' => true))
->add('name');
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'Acme\Bundle\DemoBundle\Entity\Task'
)
);
}
/**
* @return string
*/
public function getName()
{
return 'acme_demo_task';
}
}
यह आपके कार्यसूची मॉडल वर्ग होना चाहिए:
<?php
namespace Acme\Bundle\DemoBundle\Model;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Class TaskList
* @package Acme\Bundle\DemoBundle\Model
*
* @ORM\Entity()
*/
class TaskList
{
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @ORM\ManyToMany(targetEntity="\Acme\Bundle\DemoBundle\Entity\Task")
*/
private $tasks;
public function __construct()
{
$this->tasks = new ArrayCollection();
}
/**
* @param \Acme\Bundle\DemoBundle\Entity\Task $task
* @return $this
*/
public function addTask(\Acme\Bundle\DemoBundle\Entity\Task $task)
{
$this->tasks[] = $task;
return $this;
}
/**
* @param \Acme\Bundle\DemoBundle\Entity\Task $task
* @return $this
*/
public function removeTask(\Acme\Bundle\DemoBundle\Entity\Task $task)
{
$this->tasks->remove($task);
return $this;
}
/**
* @return ArrayCollection
*/
public function getTasks()
{
return $this->tasks;
}
/**
* @param \Doctrine\Common\Collections\Collection $tasks
* @return $this
*/
public function setTasks(\Doctrine\Common\Collections\Collection $tasks)
{
$this->tasks = $tasks;
return $this;
}
/**
* @param \Knp\Component\Pager\Pagination\PaginationInterface $pagination
* @return $this
*/
public function setFromPagination(\Knp\Component\Pager\Pagination\PaginationInterface $pagination)
{
foreach ($pagination as $task) {
$this->addTask($task);
}
return $this;
}
}
और TaskListType वर्ग नीचे खोजने के लिए:
<?php
namespace Acme\Bundle\DemoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class TaskListType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'tasks',
'collection',
array(
'type' => new \Acme\Bundle\DemoBundle\Form\TaskType(),
)
)
->add('save', 'submit');
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'Acme\Bundle\DemoBundle\Model\TaskList'
)
);
}
/**
* @return string
*/
public function getName()
{
return 'acme_demo_task_list';
}
}
और आपकी सेवाएं.एमएलएल (वैकल्पिक):
services:
acme.demo.form.type.task_list:
class: Acme\Bundle\DemoBundle\Form\TaskListType
tags:
- { name: form.type, alias: acme_demo_task_list }
और एक नमूना नियंत्रक:
public function indexAction($page)
{
ini_set('xdebug.max_nesting_level', 300); // this might be useful with deeply nested forms
$search = $this->getRequest()->get(
'search',
array(
'name' => '',
'date' => '',
'lang' => $this->container->getParameter('acme_core.default_lang')
)
);
/**
* @var \Doctrine\ORM\EntityManager $em
*/
$em = $this->getDoctrine()->getManager();
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$em->getRepository('AcmeDemoBundle:Task')->getQueryFilteringByLangNameAndDate(
$search['lang'],
$search['name'],
$search['date'] != '' ? new \DateTime($search['date']) : null
),
$page,
$this->getRequest()->get('elementsPerPage', 10)
);
$taskList = new TaskList();
$taskList->setFromPagination($pagination);
$form = $this->createForm('acme_demo_task_list', $taskList); // "acme_demo_task_list" has been defined in the services.yml file
$form->handleRequest($this->getRequest());
if ($form->isValid()) {
foreach ($form->getData() as $task) {
$em->merge($task);
}
$em->flush();
}
return $this->render(
'AcmeDemoBundle:Task:index.html.twig',
array(
'search' => $search,
'pagination' => $pagination,
'form' => $form->createView()
)
);
}
मुझे आशा है कि इस मदद करता है!
आप jQuery का उपयोग कर 'बारे में सोचना चाहिए:
इसी को हम हमारे टहनी ध्यान में रखते हुए का उपयोग कर समाप्त हो गया है ऐसे कार्यों के लिए। यह आपको सभी रूपों को जमा करने की अनुमति देता है। –
खरीदें और सिद्धांत के साथ क्या करने के लिए jquery है। क्या आप मुझे कुछ लिंक दे सकते हैं ताकि मैं देख सकूं कि आपका क्या मतलब है – user825904