Hallo tintifax
Hier ein Beispiel eines Controllers, den du mit https://foo.ch/member/#member-id# aufrufen kannst. Beispielsweise https://foo.ch/member/123.
Der Controller gibt die ID, den Vornamen und den Nachnamen des Datensatzes im JSON Format zurück.
Beispielsweise:
Code:
{"data":{"id":"123","firstname":"Hans","lastname":"Test"}}
oder
wenn kein Datensatz zur ID gefunden wurde.
Die ID ist Bestandteil der url und muss eine Zahl sein, sonst verursacht der Aufruf eine Exception.
PHP-Code:
<?php
// src/Controller/MemberController.php
namespace App\Controller;
use Doctrine\DBAL\Connection;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/member/{id}", name=MemberController::class)
*/
class MemberController
{
/**
* @var Connection
*/
private $connection;
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
/**
* @throws \Doctrine\DBAL\Driver\Exception
* @throws \Doctrine\DBAL\Exception
*/
public function __invoke(int $id): JsonResponse
{
$resResult = $this->connection->executeQuery(
"SELECT id,firstname,lastname FROM tl_member WHERE id=?",
[$id]
);
$row = $resResult->fetchAssociative();
$arrJson = [
'data' => !$row ? null : $row,
];
return new JsonResponse($arrJson);
}
}
Javascript-Teil:
Code:
<script>
$.getJSON("member/123", json => {
if (json && json.data !== null) {
console.log('ID: ' + json.data['id']);
console.log('Firstname: ' + json.data['firstname']);
console.log('Lastname: ' + json.data['lastname']);
}
});
</script>
services.yaml und routes.yaml stimmen eh, oder ?
Ja, das stimmt.
Liebe Grüsse
Marko
Lesezeichen