PHP-Symfony2-从数据库中提取数据并以表格形式显示
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-Symfony2-从数据库中提取数据并以表格形式显示,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10315字,纯文字阅读大概需要15分钟。
内容图文
![PHP-Symfony2-从数据库中提取数据并以表格形式显示](/upload/InfoBanner/zyjiaocheng/882/ead834c6044340c4b20e64033077bc05.jpg)
我想在表单上显示数据,但我不能这样做.
这是我在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的捆绑包,我想在那个捆绑包上显示那些实体.例如,当我在该捆绑包上致电{{entity.address2}}以显示我的地址时,它表明:(变量“实体”不存在)
如何在另一个捆绑包(例如ShowBundle)的树枝窗体中显示这些配置文件实体?
非常感谢
解决方法:
当然,您可以使用全局的{{app.user.variablename}}.但是对于其他变量,视图只能显示控制器发送给它的数据.那就是MVC(模型-视图-控制器)架构.
仅当控制器将变量实体发送到视图时,变量实体才存在于Twig视图中.这就是行返回array(‘entities’=> $entities);的内容.在ProfileController.php上执行此操作,这就是为什么可以在Resources / Profile / show.html中使用它.
如果要显示另一个捆绑包中的实体,只需将其从数据库中拉出并将其发送到视图,就像在ProfileController.php中一样.如果您自己编写了发布的代码,那将是一件容易的事.
如果您不理解所发布的代码,建议您学习使用Symfony.您可以阅读the Book,这是出色的循序渐进文档.
提示 :
将此代码复制粘贴到其他捆绑控制器中(以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
您将通过模板中的{{个人资料}}访问个人资料.
内容总结
以上是互联网集市为您收集整理的PHP-Symfony2-从数据库中提取数据并以表格形式显示全部内容,希望文章能够帮你解决PHP-Symfony2-从数据库中提取数据并以表格形式显示所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。