【问题标题】:"Cannot declare class App\Http\Controllers\category because the name is already in use"“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”
【发布时间】:2019-09-24 13:41:48
【问题描述】:

“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”。如何解决它,请有人解释我

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\category;
class category extends Controller
{

    public function index(){
        return view('admin.category.category_entry');
    }

    public function save(Request $request){
        $categoryentry=new category();
        $categoryentry->name=$request->name;
        $categoryentry->description=$request-> description;
        $categoryentry->publication_status=$request->publication_status;
        $categoryentry->save();
        return redirect('/category/save')->with('msg','Data inserted');
    }
}

【问题讨论】:

  • 应该是 CategoryController no Category 所以你没有同名的模型类和控制器类
  • 模型名称和控制器名称必须不同..为什么你使用相似的名称..这会产生歧义。

标签: laravel laravel-5


【解决方案1】:

您的控制器类 category 与您的模型类 category 发生名称冲突。 将您的控制器更改为 CategoryController,它应该可以解决问题,并且类名应该始终以大写开头。

你可以在不同的命名空间中声明同名的类,但是你不能将这个类调用到另一个同名的类中,这会导致名称冲突。因此,由于以下原因,您的错误正在弹出:-

use App\category; 
class category extends Controller

您需要更改其中任何一个的名称。

【讨论】:

  • 他们肯定在一个单独的命名空间中吗?这可能只是一个错误的过去错误,你有错误的命名空间......没有理由他不能将模型和控制器命名为“类别”,只要它们位于不同的命名空间中......
  • 是的,他当然可以,但他不能这样做use App\category; class category extends Controller。 ;
  • 我遇到了这个问题,composer dump-autoload 没有解决,然后使用这个解决方案stackoverflow.com/a/64385832/308578
【解决方案2】:

问题是您在此文件中使用了 2 个名为 category 的类。 App\categoryApp\Http\Controllers\category

您有 2 个选项来解决此问题:

  1. 通过更改类名解决名称冲突。例如 将App\Http\Controllers\category 更改为 App\Http\Controllers\categoryController
  2. 将导入的App\category 重命名为不会在此文件中存在的其他名称,如下所示:
use App\category as categoryModel;

// ...


public function save(Request $request){

    $categoryentry=new categoryModel();

    // ...
}

希望对你有帮助。

【讨论】:

    【解决方案3】:

    我认为你应该使用这段代码。

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\category AS category_model;
    class category extends Controller
    {
    
        public function index(){
            return view('admin.category.category_entry');
        }
    
        public function save(Request $request){
            $categoryentry= new category_model;
            $categoryentry->name=$request->name;
            $categoryentry->description=$request->description;
            $categoryentry->publication_status=$request->publication_status;
            $categoryentry->save();
            return redirect('/category/save')->with('msg','Data inserted');
        }
    }
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 2020-06-21
      • 2021-06-13
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多