【问题标题】:Reaching a controller in multiple folders到达多个文件夹中的控制器
【发布时间】:2020-06-20 00:13:49
【问题描述】:

我在这个位置App\Http\Controllers\UserPortal\PlainVersion;定义了一个控制器

这是控制器

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Controllers\UserPortal\PlainVersion;

class UserPortalController extends Controller
{
     public function my_account()
    {
        return view('userportal\htmlversion\my_account');
    }

这是我的 web.php

<?php
//UserPortal landing
Route::get('my_account', 'UserPortal\PlainVersion\UserPortalController@my_account');
//Route::get('ma_ajax', 'UserPortal\PhpVersion\UserPortalController@my_account_ajax');

但是,即使在运行 composer dump-autoload 之后,我仍然会收到此错误

Illuminate\Contracts\Container\BindingResolutionException 目标类 [App\Http\Controllers\UserPortal\PlainVersion\UserPortalController] 不存在。 http://localhost:8000/my_account

为什么我总是收到这个错误?我正在使用 laravel 6。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    控制器类中指定的命名空间需要与文件所在的路径相匹配。

    <?php
    namespace App\Http\Controllers\UserPortal\PlainVersion;
    
    use Illuminate\Http\Request;
    
    
    class UserPortalController extends Controller
    {
         public function my_account()
        {
            return view('userportal\htmlversion\my_account');
        }
    

    【讨论】:

      【解决方案2】:

      我认为控制器命名空间应该是

      namespace App\Http\Controllers\UserPortal\PlainVersion 
      

      我之前也遇到过同样的问题,已经解决了。

      【讨论】:

      • 这个类App\Http\Controllers\UserPortal\PlainVersion 存在吗?如果它只是一个文件夹,你不应该use
      【解决方案3】:

      这行得通,但我欢迎 cmets 为什么这样做

      <?php
      namespace App\Http\Controllers\UserPortal\PlainVersion;
      
      use Illuminate\Http\Request;
      
      use App\Http\Controllers\Controller;
      
      //use App\Http\Controllers\UserPortal\PlainVersion;
      
      class UserPortalController extends Controller
      {
           public function my_account()
          {
              return view('userportal\htmlversion\my_account');
          }
      

      【讨论】:

      • 命名空间和路径名匹配是允许文件自动加载工作的原因。 PHP 在路由中看到 App\Http\Controllers\UserPortal\PlainVersion\UserPortalController 的要求,自动将其转换为路径,并尝试加载该文件。 php-fig.org/psr/psr-4
      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 2015-05-23
      • 2018-08-06
      相关资源
      最近更新 更多