Bitte, hat jemand ein Beispiel für die Überschreibung des Admin-Controllers für Prestashop 1.7.7 (basierend auf Symfony)?
Danke für deine Antworten.
Lösung des Problems
Dazu habe ich ein Mustermodul erstellt, das hier (unter Releases) heruntergeladen werden kann.
Der Prozess zum Überschreiben der spezifischen Route /adminXXXX/index.php/sell/orders/
ist wie folgt:
src/Controller
von, was die Konvention ist. Dieser Controller muss die Klasse erweitern PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController
. Ich lade meine Klassen mit dem Composer Autoloader, also hier ist das Setup:"autoload": {
"psr-4": {
"Skaparate\\": "src/"
},
"classmap": [
"sk_testmodule.php"
],
"exclude-from-classmap": []
},
config
im Stammverzeichnis Ihres Projekts erstellen. Dies ist wichtig, da PrestaShop die Routen und Dienste von dort lädt.routes.yml
innerhalb des zuvor erstellten Ordners.routes.yml
Sie darin die Route, die Sie überschreiben möchten. In diesem Fall heißt die Route admin_orders_index
, daher schreiben wir Folgendes: admin_orders_index:
path: /sell/orders/
# POST is required because admin_order_index is also setup as the grid reset return route.
methods: [GET,POST]
defaults:
_controller: 'Skaparate\Controller\Admin\CustomOrdersController::indexAction'
_disable_module_prefix: true
<?php
namespace Skaparate\Controller\Admin;
if (!defined('_PS_VERSION_')) {
die;
}
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use PrestaShopBundle\Security\Annotation\AdminSecurity;
use PrestaShopBundle\Security\Annotation\ModuleActivated;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
class CustomOrdersController extends FrameworkBundleAdminController
{
/**
* Shows list of orders
*
* @param Request $request
* @param OrderFilters $filters
*
* @return Response
*/
public function indexAction(Request $request)
{
return $this->render(
'@Modules/sk_testmodule/views/templates/admin/sell/order/index.html.twig',
[
'enableSidebar' => true,
]
);
}
}
Diese Projektstruktur wäre:
├── composer.json
├── composer.lock
├── config
│ └── routes.yml
├── README.md
├── sk_testmodule.php
├── src
│ └── Controller
│ └── Admin
│ └── CustomOrdersController.php
└── views
└── templates
└── admin
└── sell
└── order
└── index.html.twig
Natürlich müssen Sie die Datei erstellen views/templates/admin/sell/orders/index.html.twig
. Ich habe es in diesen Pfad eingefügt, um die PrestaShop-Struktur beizubehalten, aber es ist nicht erforderlich.
Als Referenz sind Symfony-Routen in src/PrestaShopBundle/Resources/config/routes
(relativ zur PrestaShop-Installation) definiert.
Grüße!
Keine Kommentare:
Kommentar veröffentlichen