首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名空间在Laravel 4中不起作用?

命名空间在Laravel 4中不起作用?
EN

Stack Overflow用户
提问于 2014-02-24 21:59:09
回答 1查看 4K关注 0票数 0

好的我用的是Laravel 4.1..。我想让我的嵌套控制器加载..。它在我的本地运行良好,当我做我以前的方法只是运行一个作曲家转储-autoload,但在共享主机提供商,我不能运行该命令行.

无论如何,下面是我的composer.json文件的外观:

代码语言:javascript
复制
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.1.*",
        "laravelbook/ardent": "2.4.*",
        "loic-sharma/profiler": "1.1.*",
        "intervention/image": "dev-master",
        "mews/purifier": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/controllers/dash",
            "app/controllers/dash/product",
            "app/models",
            "app/models/Product",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ],
        "psr-0": {
            "App\\Controllers": "app/controllers",
            "App\\Controllers\\Dash": "app/controllers/dash",
            "App\\Controllers\\Dash\\Product": "app/controllers/dash/product",
            "App\\Models": "app/models",
            "App\\Models\\Product": "app/models/Product"
        }
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev"
}

下面是一个嵌套控制器( controller /dash/MediaController.php)

代码语言:javascript
复制
<?php

namespace App\Controllers\Dash;

class MediaController extends BaseController { }

在我的路线上,我有:

代码语言:javascript
复制
Route::group(array('prefix' => 'dash', 'before' => 'auth'), function()
{
    Route::controller('media', 'App\Controllers\Dash\MediaController');
});

但它还是让我犯了这个错误:

找不到类‘App\Controller\Dash\MediaController’

EN

回答 1

Stack Overflow用户

发布于 2014-02-24 22:44:45

除非使用PSR-4 (甚至PSR-0),否则必须执行

代码语言:javascript
复制
composer dump-autoload 

每次在文件夹中创建新类时。所以composer将这些类添加到vendor/composer/autoload_classmap.php文件中。

查看您的PSR-0自动加载结构,我们可以看到您的控制器设置为:

代码语言:javascript
复制
"App\\Controllers": "app/controllers",

因此,现在composer自动加载系统将尝试在(类似于)这个文件夹中找到您的App\Controllers\Dash\MediaController类:

代码语言:javascript
复制
/var/www/webapp/app/controllers/App/Controllers/Dash/MediaController.php

这很难,我知道,但是PSR-4更容易理解,因为

代码语言:javascript
复制
"App\\Controllers\\": "app/controllers",

意味着您的控制器文件将在以下位置找到:

代码语言:javascript
复制
/var/www/webapp/app/controllers/Dash/MediaController.php
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21999961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档