【问题标题】:How do I resolve a "Fatal error" when creating a service?创建服务时如何解决“致命错误”?
【发布时间】:2016-04-12 14:23:14
【问题描述】:

我正在关注这个Drupal 8 module development 101 教程。 YouTube 视频的时间是 37:15 到 45:14。我一直收到此错误:

致命错误:在第 11 行的 C:\Users\myName\Sites\devdesktop\drupal-8.0.5\modules\dino_roar\src\Controller\RoarController.php 中找不到类 'Drupal\dino_roar\DinoServices\HelloGenerator'

文件夹结构:

HelloGenerator.php

<?php

namespace Drupal\dino_roar\DinoServices;

class HelloGenerator
{
    public function getHello($count){
        return "Gotten Hello ".$count;
    }
}

RoarController.php

<?php

namespace Drupal\dino_roar\Controller;

//use Drupal\dino_roar\DinoServices\HelloGenerator;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RoarController extends Controller
{
    public function roar($count){
        //$helloGenerator = new HelloGenerator();
        $helloGenerator = $this->get('dino_roar.hello_generator');
        $hello = $helloGenerator->getHello($count);
        return new Response($hello);

        //return new Response("Hello World ".$count);
    }
}

dino_roar.info.yml

name: Dino ROAR
type: module
description: "ROAR at you"
package: Custom
core: 8.x

dino_roar.routing.yml

dino_says:
    path: /dino/says/{count}
    defaults:
        _controller: '\Drupal\dino_roar\Controller\RoarController::roar'
    requirements:
        _permission: 'access content'

dino_roar.services.yml

services:
    dino_roar.hello_generator:
        class: Drupal\dino_roar\DinoServices\HelloGenerator

致命错误指向 RoarController.php 文件中的这行代码:$helloGenerator = new HelloGenerator();

这是 Symfony 版本。我在这个窗口中找不到说 1、2 或 3。

【问题讨论】:

    标签: symfony drupal phpstorm drupal-modules drupal-services


    【解决方案1】:

    首先,您的 RoarController 类需要扩展 Controller 类

    class RoarController
    

    use Symfony\Bundle\FrameworkBundle\Controller\Controller
    
    class RoarController extends Controller
    

    编辑

    好的,现在改变

    public function roar($count){
        $helloGenerator = new HelloGenerator();
        $hello = $helloGenerator->getHello($count);
        return new Response($hello);
    
        //return new Response("Hello World ".$count);
    }
    

    public function roar($count){
        $helloGenerator = $this->get('dino_roar.hello_generator');
        $hello = $helloGenerator->getHello($count);
        return new Response($hello);
    
        //return new Response("Hello World ".$count);
    }
    

    您不了解如何使用服务,所以我邀请您阅读此http://symfony.com/doc/current/book/service_container.html#creating-configuring-services-in-the-container

    【讨论】:

    • 按照您的建议更新我的 RoarController,我仍然会遇到同样的错误。
    • 谢谢!我来看看阅读;但是,我刚刚尝试了您的新编辑,但仍然无法正常工作..同样的错误。我不确定我所做的有什么不同,因为我正在关注的 YouTube 教程在视频中工作得很好。
    • 致命错误:在 C:\Users\myName\Sites\devdesktop\drupal-8.0.5\modules\dino_roar\src\Controller 中找不到类 'Symfony\Bundle\FrameworkBundle\Controller\Controller' \RoarController.php 第 10 行
    • 你用的是什么版本的 Symfony?
    • 第 10 行是类 RoarController extends Controller 行之后的 {。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多