【问题标题】:Target class does not exist does not exist目标类不存在不存在
【发布时间】:2021-01-12 19:05:34
【问题描述】:

大家!我尝试了一切,没有办法解决这个问题

laravel 版本 8.6.0

SalaudarController.php

<?php

namespace Blog\Http\Controllers;

use Illuminate\Http\Request;

class SaludarController extends Controller
{
    public function decirHola($persona= 'humano')(
      return "hola" . $persona . "<br /> <a href='"
      .route('decir.bienvenido', ["blogger" => $persona]).
      "'>Decir Bienvenido </a> ";
      )
}

web.php

<?php

use Illuminate\Support\Facades\Route;
use Blog\app\Http\Controllers;

Route::get('/hola/{persona?}', [SaludarController::class, 'decirHola']);

我阅读了同一问题的其他主题,我应用了所有建议,但问题仍然存在。我读了你的建议

【问题讨论】:

  • 你的SalaudarController.php控制器的命名空间应该是namespace App\Http\Controllers;,至少按照惯例(虽然你可以使用你有的,如果你真的想的话,但我不会)。无论如何,请参阅上面标有重复标签的问题,了解如何正确设置路由以使用控制器的命名空间
  • 如果您在实施命名空间更改和配置路由的解决方案时遇到任何问题,请告诉我们,另请参阅此重复问题stackoverflow.com/questions/64037500/…
  • 试试composer dump-autoload
  • 那是use App\Http\Controllers\SaludarController;?也尝试重新生成所有类composer dump-autoload

标签: php laravel


【解决方案1】:

尝试导入Blog\Http\Controllers\SaludarController 而不是Blog\app\Http\Controllers

您不需要在命名空间中包含 app 目录,因为它已经注册为 composer 自动加载路径(请参阅 https://github.com/laravel/laravel/blob/master/composer.json)。

【讨论】:

  • 顺便说一下,默认的 Laravel 命名空间是App,所以如果你想改用Blog,你需要运行php artisan app:namespace Blog。见 stackoverflow.com/questions/57545668/…>
  • 这是不正确的。根据约定和 PSR 4,如果控制器位于 app/http/controllers 文件夹中(如图所示),正确的命名空间将是 namespace App\Http\Controllers; 命名空间应该更正,以及导入语句
  • 这取决于他的应用命名空间是什么。由于他在SalaudarController 中使用了Blog\Http\Controllers,我猜他已经使用php artisan app:name 命令将默认命名空间更改为Blog。似乎该命令已在 Laravel 6 中删除。
  • 尽管如此,有更好的方法来解决实际问题(无论使用的命名空间如何)。即通过配置RouteServiceProvider 使用应用程序命名空间。
  • 我将项目的命名空间更改为 cmd 中的 blog。我已经发现了问题。 public function decirHola($persona= 'humano') { 有一个大括号,而不是括号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2021-02-26
  • 2021-11-23
  • 2021-10-22
  • 1970-01-01
  • 2022-06-23
  • 2021-01-06
相关资源
最近更新 更多