أنا Symfony أحاول فتح صفحة على سبيل المثال:
http://project:8888/products
في تلك الصفحة ، أود أن أعرض العنوان مع البزاقة:
<h1>{{page.slug}}</h1>
إحدى المشاكل هي أن فتح الصفحة يستغرق وقتًا طويلاً. والمشكلة الأخرى ، أن هناك رسالة خطأ ، أنه لا يمكن الوصول إلى سبيكة السمة ....
MyController.php:
<?php
namespace App\Controller;
use App\Entity\User;
use App\Entity\Pages;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Omines\DataTablesBundle\Controller\DataTablesTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
class DataTableController extends Controller
{
/**
* @Route("/{slug}", name="page")
*/
use DataTablesTrait;
public function showPage($slug)
{
$pages = $this->getDoctrine()->getRepository(Pages::class)->findAll();
$page = $this->getDoctrine()->getRepository(Pages::class)->find($slug);
$table = $this->getDoctrine()->getRepository(User::class)->findAll();
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
$json_string = $serializer->serialize($table, 'json');
$file = 'data/data.json';
file_put_contents($file, $json_string);
return $this->render('list.html.twig', ['pages' => $pages, 'page' => $page]);
}
}
list.html.twig:
{% extends 'base.html.twig' %}
{% block title %}Symfony{% endblock %}
{% block body %}
<div class="wrapper">
{{ include('inc/navbar.html.twig') }}
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper" style="min-height: 866px;">
<section class="content-header">
<h1>{{page.slug}}</h1>
</section>
<section class="content">
<div class="row">
<div class="col-xs-12">
<div class="box">
<!-- /.box-header -->
<div class="box-body">
<table id="example" class="display" width="100%" cellspacing="0">
<thead>
<tr>
<th>ID</th>
<th>E-Mail</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- /.content-wrapper -->
</div>
<!-- ./wrapper -->
{% endblock %}
{% block javascripts %}
{% endblock %}
كيان الصفحات:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\PagesRepository")
*/
class Pages
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="string", length=255)
*/
private $template;
/**
* @ORM\Column(type="string", length=255)
*/
private $icon;
/**
* @ORM\Column(type="string", length=255)
*/
private $slug;
public function getId()
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getTemplate(): ?string
{
return $this->template;
}
public function setTemplate(string $template): self
{
$this->template = $template;
return $this;
}
public function getIcon(): ?string
{
return $this->icon;
}
public function setIcon(string $icon): self
{
$this->icon = $icon;
return $this;
}
public function getSlug(): ?string
{
return $this->slug;
}
public function setSlug(string $slug): self
{
$this->slug = $slug;
return $this;
}
}
الخطأ:
Impossible to access an attribute ("slug") on a null variable.