hier bin ich heute mit einer anderen Frage:Schlanke 3 und Zweig - globale Variable von einer DB-Abfrage
ich mit Slim 3 Rahmen und Twig Template-Engine gerade arbeite, ich baue ein Mini-CMS, das ermöglicht es dem Benutzer (unter anderem), um das Navigationsmenü zu bearbeiten. Nun, die Menüelemente sind im Grunde alle Kategorien, die ich in einer MySQL-Tabelle namens "categories" gespeichert habe, das Problem ist, dass ich nicht weiß, wie man schlank (und eloquent, da ich es verwende) weiß eine Abfrage ausführen, um an den Zweig-Container zu übergeben, weil ich bereits weiß, dass, wenn ich das Menü-Array in allen Ansichten verfügbar haben möchte ich es global injizieren, weiß ich einfach nicht wo, um die Funktion zu deklarieren. Ich habe ähnliche Fragen gesehen, bei denen die einzige Antwort darin besteht, wie die Variable injiziert wird und nicht, wo die Funktion geschrieben werden soll. Sollte ich schreibe es gerade innerhalb dependencies.php und fügen:
use App\Model\Category;
oder gibt es einen anderen Weg? Ich möchte eine Funktion schreiben, die die Kategorien und speichert alle sie in einer Variablen nimmt, die ich weltweit in den Behälter
routes.php
$app->get('/', 'HomeController:index')->setName('homepage');
$app->get('brands', 'MainController:index')->setName('all_brands');
$app->get('/{category}', 'MainController:single_category');
$app->get('/{category}/{brand}', 'MainController:single_showbrand');
dependencies.php
<?php
// DIC configuration
$container = $app->getContainer();
// view renderer
$container['renderer'] = function ($c) {
$settings = $c->get('settings')['renderer'];
return new Slim\Views\PhpRenderer($settings['template_path']);
};
// monolog
$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));
return $logger;
};
// Twig
$container['view'] = function ($c) {
$view = new \Slim\Views\Twig('templates');
// Instantiate and add Slim specific extension
$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
$view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath));
$view->getEnvironment()->addGlobal('currentUrl',$c->get('request')->getUri());
return $view;
};
// Controllers
// -- HomeController.php
$container['HomeController'] = function ($container) {
return new \App\Controllers\HomeController($container);
};
// -- MainController.php
$container['MainController'] = function ($container) {
return new \App\Controllers\MainController($container);
};
// Eloquent Database Injection
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$container['db'] = function ($container) use ($capsule) {
return $capsule;
};
// Validator
$container['validator'] = function ($container) {
return new App\Validation\Validator;
};
Ordnerstruktur passieren kann
- application
- Controllers
- HomeController.php
- MainController.php
- Models
- User.php
- Category.php
- Brand.php
- Validation
- assets
- css
- js
- ...
- logs
- node_modules
- ...
- ...
- public
- index.php
- src
- dependencies.php
- middleware.php
- routes.php
- settings.php
- templates
zeigen die Ordnerstruktur und Ihre Route bitte. –
@ MattiaDinosaur posten bearbeitet – K3nzie
Wenn Sie Verletzungen der Array-Variable global wollen, können Sie es verletzen. –