簡體   English   中英

Slim3-傳遞給構造函數的參數1必須是Slim \\ Views \\ Twig的實例

[英]Slim3 - Argument 1 passed to constructor must be instance of Slim\Views\Twig

我正在使用Slim3,但是在注冊依賴項時遇到問題。 根據錯誤,我創建的構造函數期望參數1的類型為Slim\\Views\\Twig

問題是我正在傳遞Slim\\Views\\Twig的實例-至少我認為是。 我已經幾個月沒有使用Slim了,所以我可能會遺漏一些明顯的東西。 從來沒有,我找不到問題。

我得到的錯誤是:

Catchable fatal error:  Argument 1 passed to App\Controllers\RegistrationController::__construct() must be an instance of Slim\Views\Twig, instance of Slim\Container given

控制器/ RegistrationController.php

<?php

namespace App\Controllers;

class RegistrationController {
  protected $view;

  public function __construct(\Slim\Views\Twig $view) {
    $this->view = $view;
  }

  public function register($request, $response, $args) {
    // Does some stuff ...
  }
}

dependencies.php

<?php

use \App\Controllers\RegistrationController;

$container = $app->getContainer();

// Twig View
$container['view'] = function ($c) {
    $settings = $c->get('settings')['renderer'];
    $view = new \Slim\Views\Twig($settings['template_path']);
    $basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
    $view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath));
    return $view;
};

// 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;
};

// sqlite3
$container['db'] = function ($c) {
    return new SQLite3(__DIR__ . '/../db/prod.db');
};

// Registration Controller
$container['RegistrationController'] = function($c) {
  return new RegistrationController($c->get('view'));
};

路線

$app->post('/signup', '\App\Controllers\RegistrationController:register');

還嘗試了以下方法:

$app->post('/signup', \App\Controllers\RegistrationController::class . ':register');

有任何想法嗎?

問題是我定義的路線不正確,我完全錯過了“ 集裝箱分辨率 ”部分

外觀如下:

$app->post('/signup', 'RegistrationController:register');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM