Я стою перед каким-то психом ... Надеюсь, кто-нибудь там может мне помочь !? : -)
Я создаю сайт с slim3, где я пытаюсь настроить локализацию на основе этого курса на CodeCourse , и кажется, что у меня возникают проблемы с настройкой моей сессии должным образом, так как я использую DI-Bridge, тогда как он не ...
Кажется, я не могу понять, ПОЧЕМУ это не удается в соответствии с трассировкой стека!?
Может кто-нибудь помочь, возможно?
Вот мой contaner.php
use function DI\get;
use Interop\Container\ContainerInterface;
use Slim\Csrf\Guard;
use Slim\Flash\Messages;
use Slim\Views\Twig;
use Slim\Views\TwigExtension;
use Illuminate\Translation\Translator;
use Illuminate\Translation\FileLoader;
use Illuminate\Filesystem\Filesystem;
//use Noodlehaus\Config;
use app\views\extensions\TranslationExtension;
use app\handlers\auth\Auth;
use app\handlers\errors\NotFoundHandler;
use app\models\data\About;
use app\models\data\Contact;
use app\models\data\Framework;
use app\models\data\Project;
use app\models\data\Service;
use app\models\data\Site;
use app\models\data\Testimonial;
use app\models\data\User;
use app\validation\contracts\ValidatorInterface;
use app\validation\Validator;
use app\validation\domain\DomainCheck;
use app\validation\email\EmailAvailable;
use app\validation\password\MatchesPassword;
return [
/**
* attaching : XX ->
*/
/* ROUTER */
'router' => get(Slim\Router::class),
/* 404 ERROR */
'notFoundHandler' => function(ContainerInterface $c) {
return new NotFoundHandler ($c->get(Twig::class));
},
/* AUTH */
Auth::class => function (ContainerInterface $c) {
return new Auth;
},
/* CSRF */
Guard::class => function (ContainerInterface $c) {
return new Guard;
},
/* FLASH */
Messages::class => function (ContainerInterface $c) {
return new Messages;
},
/* VALIDATOR */
ValidatorInterface::class => function (ContainerInterface $c) {
return new Validator;
},
/* TRANSLATOR */
Translator::class => function (ContainerInterface $c) {
$fallback = $c->get('settings.translations.fallback');
$loader = new FileLoader(
new Filesystem(), $c->get('settings.translations.path')
);
$translator = new Translator($loader, $_SESSION['lang'] ?? $fallback);
$translator->setFallback($fallback);
return $translator;
},
/* TWIG */
Twig::class => function (ContainerInterface $c) {
$view = new Twig(__DIR__ . '/../resources/views', [
'cache' => false
]);
$view->addExtension(new TwigExtension(
$c->get('router'),
$c->get('request')->getUri()
));
$view->addExtension(new TranslationExtension(
$c->get(Translator::class)
));
$view->getEnvironment()->addGlobal('flash', $c->get(Messages::class));
$view->getEnvironment()->addGlobal('auth', [
'check' => $c->get(Auth::class)->check(),
'user' => $c->get(Auth::class)->user(),
]);
return $view;
},
/**
* attaching : RESPECT -> VALIDATION -> CUSTOM RULES
*/
/* DOMAIN */
DomainCheck::class => function (ContainerInterface $c) {
return new DomainCheck;
},
/* EMAIL */
EmailAvailable::class => function (ContainerInterface $c) {
return new EmailAvailable;
},
/* PASSWORD */
MatchesPassword::class => function (ContainerInterface $c) {
return new MatchesPassword ($c->get(password));
},
/**
* attaching : MODELS ->
*/
/* ABOUT */
About::class => function (ContainerInterface $c) {
return new About;
},
/* CONTACT */
Contact::class => function (ContainerInterface $c) {
return new Contact;
},
/* FRAMEWORK */
Framework::class => function (ContainerInterface $c) {
return new Framework;
},
/* PROJECT */
Project::class => function (ContainerInterface $c) {
return new Project;
},
/* SERVICE */
Service::class => function (ContainerInterface $c) {
return new Service;
},
/* SITE */
Site::class => function (ContainerInterface $c) {
return new Site;
},
/* TESTIMONIAL */
Testimonial::class => function (ContainerInterface $c) {
return new Testimonial;
},
/* USER */
User::class => function (ContainerInterface $c) {
return new User;
},
];
и вот мой TranslationController.php
<?php
namespace App\Controllers;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Router;
class TranslationController {
/**
* @param Request $request
* @param Response $response
* @param Router $router
* @param $args
*
* @return mixed
*/
public function switch(Request $request, Response $response, Router $router, $args) {
if (isset($args['lang'])) {
$_SESSION['lang'] = $args['lang'];
}
return $response->withRedirect($router->pathFor('home'));
}
}
плюс маршрут для перевода:
<?php
/**
* adding to view : LOCALIZATION
*/
$app->get('/translate/{lang}', ['app\controllers\TranslationController', 'switch'])->setName('translate.switch');
и, наконец, вот ошибка трассировки стека