【问题标题】:Cannot create custom Traits in Laravel无法在 Laravel 中创建自定义特征
【发布时间】:2018-03-14 20:30:04
【问题描述】:

由于 Laravel 5.5.36 的某些原因,我无法创建 Laravel 框架可识别的 Trait。

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\LedaAuth\Authenticate\LoginController;
use Illuminate\Support\Facades\Auth;
use LedaAuth\Authenticate\LedaAuthenticate;

class LgStfController extends LoginController
{

    use LedaAuthenticate;
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/dashboard';

...

Laravel 报错说 "Trait 'Something\Authenticate\LedaAuthenticate' not found". 尽管我的树是

- Controllers
    + Auth
    - LedaAuth
        - Authenticate
            > LedaAuthenticate.php
            > LoginController.php
    > LgStfController.php

是不是我做错了什么?

【问题讨论】:

  • 你的树中有一个错字,LedaAuthenicate 而不是LedaAuthenticate
  • @Liora 我的错,我修好了。我正在使用 PhpStorm,所以它一直对我有帮助。

标签: php laravel


【解决方案1】:

对于任何可能遇到相同问题的人。我能够通过在 Http 文件夹中创建文件夹名称 Traits 来解决此问题。

- App
  - Http
    - Controllers
    + Auth
    - LedaAuth
        - Authenticate
            > LoginController.php
        > LgStfController.php
    - Traits
       - LedaAuth
           > LedaAuthenticate.php

我最初的想法是受到How to use traits in Laravel 5.4.18?问题的启发。

然后查看原因,我相信 laravel 自动加载功能遵循 PSR-4 系统,并且在 use Namespace\SubNamespace\Classname 中引用了类,但 Illuminate\Something\SomeClass 除外,其中 Illuminate 不必是第一个子文件夹laravel 项目文件夹与 use App\Http\Controllers\SomeController 等其他类声明不同。

所以这一次,在创建Trait 文件夹时,我将其称为 use App\Http\Traits\LedaAuth\LedaAuthenticate

所以新文件被重写为;

<?php

namespace App\Http\Controllers\LedaAuth;

use App\Http\Controllers\LedaAuth\Authenticate\LoginController;
use App\Http\Traits\LedaAuth\LedaAuthenticate;
use Illuminate\Support\Facades\Auth;

class LgStfController extends LoginController
{

    use LedaAuthenticate;
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/dashboard';

...

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多