gpt4 book ai didi

php - Symfony2 - 从数据库中提取数据并以表格形式显示

转载 作者:可可西里 更新时间:2023-11-01 08:17:35 27 4
gpt4 key购买 nike

我想在我的表单上显示数据,但我做不到。

这是我在 userbundle 下的 profile.php:

 <?php

namespace project\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Profile
*
* @ORM\Table(name="project_profiles")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class Profile
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var \project\UserBundle\Entity\User
*
* @ORM\OneToOne(targetEntity="\project\UserBundle\Entity\User", inversedBy="profile")
*/
private $user;

/**
* @var string
*
* @ORM\Column(name="first_name", type="string")
*/
private $firstName;

/**
* @var string
*
* @ORM\Column(name="last_name", type="string")
*/
private $lastName;

/**
* @var string
*
* @ORM\Column(name="address1", type="string")
*/
private $address1;

/**
* @var string
*
* @ORM\Column(name="address2", type="string")
*/
private $address2;

/**
* @var string
*
* @ORM\Column(name="city", type="string")
*/
private $city;

/**
* @var string
*
* @ORM\Column(name="state", type="string")
*/
private $state;

/**
* @var string
*
* @ORM\Column(name="zipcode", type="string")
*/
private $zipcode;

/**
* @var string
*
* @ORM\Column(name="country", type="string")
*/
private $country;

/**
* @var integer
*
* @ORM\Column(name="client_api_delay", type="integer")
*/
private $clientApiDelay;

/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;

/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set firstName
*
* @param string $firstName
* @return Profile
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;

return $this;
}

/**
* Get firstName
*
* @return string
*/
public function getFirstName()
{
return $this->firstName;
}

/**
* Set lastName
*
* @param string $lastName
* @return Profile
*/
public function setLastName($lastName)
{
$this->lastName = $lastName;

return $this;
}

/**
* Get lastName
*
* @return string
*/
public function getLastName()
{
return $this->lastName;
}

/**
* Set address1
*
* @param string $address1
* @return Profile
*/
public function setAddress1($address1)
{
$this->address1 = $address1;

return $this;
}

/**
* Get address1
*
* @return string
*/
public function getAddress1()
{
return $this->address1;
}

/**
* Set address2
*
* @param string $address2
* @return Profile
*/
public function setAddress2($address2)
{
$this->address2 = $address2;

return $this;
}

/**
* Get address2
*
* @return string
*/
public function getAddress2()
{
return $this->address2;
}

/**
* Set city
*
* @param string $city
* @return Profile
*/
public function setCity($city)
{
$this->city = $city;

return $this;
}

/**
* Get city
*
* @return string
*/
public function getCity()
{
return $this->city;
}

/**
* Set state
*
* @param string $state
* @return Profile
*/
public function setState($state)
{
$this->state = $state;

return $this;
}

/**
* Get state
*
* @return string
*/
public function getState()
{
return $this->state;
}

/**
* Set zipcode
*
* @param string $zipcode
* @return Profile
*/
public function setZipcode($zipcode)
{
$this->zipcode = $zipcode;

return $this;
}

/**
* Get zipcode
*
* @return string
*/
public function getZipcode()
{
return $this->zipcode;
}

/**
* Set country
*
* @param string $country
* @return Profile
*/
public function setCountry($country)
{
$this->country = $country;

return $this;
}

/**
* Get country
*
* @return string
*/
public function getCountry()
{
return $this->country;
}

/**
* Set clientApiDelay
*
* @param integer $clientApiDelay
* @return Profile
*/
public function setClientApiDelay($clientApiDelay)
{
$this->clientApiDelay = $clientApiDelay;

return $this;
}

/**
* Get clientApiDelay
*
* @return integer
*/
public function getClientApiDelay()
{
return $this->clientApiDelay;
}

/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return Profile
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;

return $this;
}

/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}

/**
* Set createdAt to NOW
*
* @return Profile
* @ORM\PrePersist
*/
public function setCreatedAtNow()
{
$this->createdAt = new \DateTime();

return $this;
}

/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return Profile
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;

return $this;
}

/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}

/**
* Set updatedAt to NOW
*
* @return Profile
* @ORM\PreUpdate
*/
public function setUpdatedAtNow()
{
$this->updatedAt = new \DateTime();

return $this;
}

/**
* Set user
*
* @param \project\UserBundle\Entity\User $user
* @return Profile
*/
public function setUser(\project\UserBundle\Entity\User $user = null)
{
$this->user = $user;

return $this;
}

/**
* Get user
*
* @return \project\UserBundle\Entity\User
*/
public function getUser()
{
return $this->user;
}
}

我的 ProfileController.php 文件:

<?php

namespace project\UserBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use project\UserBundle\Entity\Profile;
use project\UserBundle\Form\ProfileType;

/**
* Profile controller.
*
* @Route("/admin/profile")
*/
class ProfileController extends Controller
{
/**
* Lists all Profile entities.
*
* @Route("/", name="admin_profile")
* @Method("GET")
* @Template()
*/
public function indexAction()
{
$em = $this->getDoctrine()->getManager();

$entities = $em->getRepository('projectUserBundle:Profile')->findAll();

return array(
'entities' => $entities,
);
}

/**
* Creates a new Profile entity.
*
* @Route("/", name="admin_profile_create")
* @Method("POST")
* @Template("projectUserBundle:Profile:new.html.twig")
*/
public function createAction(Request $request)
{
$entity = new Profile();
$form = $this->createForm(new ProfileType(), $entity);
$form->bind($request);

if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();

return $this->redirect($this->generateUrl('admin_profile_show', array('id' => $entity->getId())));
}

return array(
'entity' => $entity,
'form' => $form->createView(),
);
}

/**
* Displays a form to create a new Profile entity.
*
* @Route("/new", name="admin_profile_new")
* @Method("GET")
* @Template()
*/
public function newAction()
{
$entity = new Profile();
$form = $this->createForm(new ProfileType(), $entity);

return array(
'entity' => $entity,
'form' => $form->createView(),
);
}

/**
* Finds and displays a Profile entity.
*
* @Route("/{id}", name="admin_profile_show")
* @Method("GET")
* @Template()
*/
public function showAction($id)
{
$em = $this->getDoctrine()->getManager();

$entity = $em->getRepository('projectUserBundle:Profile')->find($id);

if (!$entity) {
throw $this->createNotFoundException('Unable to find Profile entity.');
}

$deleteForm = $this->createDeleteForm($id);

return array(
'entity' => $entity,
'delete_form' => $deleteForm->createView(),
);
}

/**
* Displays a form to edit an existing Profile entity.
*
* @Route("/{id}/edit", name="admin_profile_edit")
* @Method("GET")
* @Template()
*/
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();

$entity = $em->getRepository('projectUserBundle:Profile')->find($id);

if (!$entity) {
throw $this->createNotFoundException('Unable to find Profile entity.');
}

$editForm = $this->createForm(new ProfileType(), $entity);
$deleteForm = $this->createDeleteForm($id);

return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}

/**
* Edits an existing Profile entity.
*
* @Route("/{id}", name="admin_profile_update")
* @Method("PUT")
* @Template("projectUserBundle:Profile:edit.html.twig")
*/
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();

$entity = $em->getRepository('projectUserBundle:Profile')->find($id);

if (!$entity) {
throw $this->createNotFoundException('Unable to find Profile entity.');
}

$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createForm(new ProfileType(), $entity);
$editForm->bind($request);

if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();

return $this->redirect($this->generateUrl('admin_profile_edit', array('id' => $id)));
}

return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}

/**
* Deletes a Profile entity.
*
* @Route("/{id}", name="admin_profile_delete")
* @Method("DELETE")
*/
public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->bind($request);

if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('projectUserBundle:Profile')->find($id);

if (!$entity) {
throw $this->createNotFoundException('Unable to find Profile entity.');
}

$em->remove($entity);
$em->flush();
}

return $this->redirect($this->generateUrl('admin_profile'));
}

/**
* Creates a form to delete a Profile entity by id.
*
* @param mixed $id The entity id
*
* @return Symfony\Component\Form\Form The form
*/
private function createDeleteForm($id)
{
return $this->createFormBuilder(array('id' => $id))
->add('id', 'hidden')
->getForm()
;
}
}

我已经在 Resources/Profile/show.html 下声明了我的实体,一切正常:例如我的地址:

<th>Address2</th>
<td>{{ entity.address2 }}</td>

我的问题是我有另一个名为 ShowBundle 的包,我想显示该包上的那些实体。例如,当我在该 bundle 上调用 {{ entity.address2 }} 以显示我的地址时,它向我显示:(变量“entity”不存在)

如何在另一个 bundle 的 twig 表单上显示这些配置文件实体,在我的例子中是 ShowBundle?

非常感谢

最佳答案

当然你可以使用{{ app.user.variablename }},它是一个全局变量。但是对于其他变量, View 只能显示 Controller 发送给它的数据。这就是 MVC(模型- View - Controller )架构。

变量 entity 仅当您的 Controller 将其发送到 View 时才存在于 Twig View 中。这就是 return array( 'entities' => $entities ); 行在您的 ProfileController.php 上所做的,这也是您可以在 Resources/Profile/show.html 中使用它的原因。

如果您想在另一个包中显示一个实体,只需将它从数据库中拉出并将其发送到 View ,就像您在 ProfileController.php 中所做的那样。如果您自己编写了发布的代码,那应该是一件容易的事。

如果您不理解您发布的代码,我建议您学习使用 Symfony。你可以阅读the Book ,这是出色的分步文档。

提示:

将此代码复制到您的其他捆绑 Controller (以 Action() 结尾的方法):

$em = $this->getDoctrine()->getManager(); //get the database manager

$profiles = $em->getRepository('projectUserBundle:Profile')->findAll(); // get the profiles

return array(
'profiles' => $profiles,
); // send data to the view

您将通过模板中的 {{ profiles }} 访问您的个人资料。

关于php - Symfony2 - 从数据库中提取数据并以表格形式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com