Beginner's avatar

ReflectionException: Class App\Http\Controllers\Backend\AboutController does not exist

Hi all,

i am new to laravel and have a problem with the AboutController.php and i not sure how to fix this.

Stack trace:
#0 /var/www/html/heincloud/bootstrap/cache/compiled.php(1479): ReflectionClass->__construct('App\\Http\\Contro...')
#1 /var/www/html/heincloud/bootstrap/cache/compiled.php(1433): Illuminate\Container\Container->build('App\\Http\\Contro...', Array)
#2 /var/www/html/heincloud/bootstrap/cache/compiled.php(2011): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
#3 /var/www/html/heincloud/bootstrap/cache/compiled.php(8661): Illuminate\Foundation\Application->make('App\\Http\\Contro...')
#4 /var/www/html/heincloud/bootstrap/cache/compiled.php(8713): Illuminate\Routing\Route->getController()
#5 /var/www/html/heincloud/bootstrap/cache/compiled.php(8695): Illuminate\Routing\Route->controllerMiddleware()
#6 /var/www/html/heincloud/bootstrap/cache/compiled.php(8350): Illuminate\Routing\Route->gatherMiddleware()
#7 /var/www/html/heincloud/bootstrap/cache/compiled.php(2539): Illuminate\Routing\Router->gatherRouteMiddleware(Object(Illuminate\Routing\Route))
#8 /var/www/html/heincloud/bootstrap/cache/compiled.php(2523): Illuminate\Foundation\Http\Kernel->gatherRouteMiddleware(Object(Illuminate\Http\Request))
#9 /var/www/html/heincloud/public/index.php(57): Illuminate\Foundation\Http\Kernel->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response))
#10 {main} 

AboutController.php is under /app/Http/Controllers/Backend/About

<?php

namespace App\Http\Controllers\Backend\About;

use App\Http\Controllers\Backend\About\AboutController; <- I tried this but not working
use App\Http\Requests;
use App\Http\Requests\About\AboutCreateRequest;
use App\Http\Requests\About\AboutUpdateRequest
use App\Http\Controllers\Controller;
use App\Aboutpages\About;
/**
 * Class DashboardController.
 */
class AboutController extends Controller
{
    /**
     * @return \Illuminate\View\View
     */
    public function index()
    {
        return view('backend.about.about.index')
            ->withAbout(About::all());
    }
    /**
    * Show the new About us form
    */
    public function create()
    {
        return view('backend.about.about.create');
    }

    /**
    * Store a newly created About Us
    *
    * @param AboutCreateRequest $request
    */
    public function store(AboutCreateRequest $request)
    {
        $about = about::create($request->aboutFillData());

        return redirect()
            ->route('backend.about.about.index')
            ->withSuccess('New About Us Successfully Created.');
    }

    /**
    * Show the About Us edit form
    *
    * @param  int  $id
    * @return Response
    */
    public function edit($id)
    {
        return view('backend.about.about.edit');
    }

    /**
    * Update the About Us page
    *
    * @param AboutUpdateRequest $request
    * @param int  $id
    */
    public function update(AboutUpdateRequest $request, $id)
    {
        $about = About::findOrFail($id);
        $about->fill($request->aboutFillData());
        $about->save();

        if ($request->action === 'continue') {
            return redirect()
            ->back()
            ->withSuccess('About Us saved.');
    }

        return redirect()
            ->route('backend.about.about.index')
            ->withSuccess('About Us saved.');
    }

    /**
    * Remove the specified resource from storage.
    *
    * @param  int  $id
    * @return Response
    */
    public function destroy($id)
    {
        $about = About::findOrFail($id);
        $about->delete();

        return redirect()
            ->route('backend.about.about.index')
            ->withSuccess('About Us deleted.');
  }
}

AboutModell

<?php

namespace App\Aboutpages;

use Illuminate\Database\Eloquent\Model;
use App\Services\Markdowner;

class About extends Model
{
    public $table = "about";
    protected $fillable = [
        'title', 'content', 
    ];
    /**
     * Set the title attribute and automatically the slug
     *
     * @param string $value
     */
    public function setTitleAttribute($value)
    {
        $this->attributes['title'] = $value;

        if (! $this->exists) {
            $this->setUniqueSlug($value, '');
        }
    }
    /**
     * Recursive routine to set a unique slug
     *
     * @param string $title
     * @param mixed $extra
     */
    protected function setUniqueSlug($title, $extra)
    {
        $slug = str_slug($title.'-'.$extra);

        if (static::whereSlug($slug)->exists()) {
            $this->setUniqueSlug($title, $extra + 1);
            return;
        }

        $this->attributes['slug'] = $slug;
    }
}

0 likes
2 replies
tomopongrac's avatar

Your controller is in namespace

namespace App\Http\Controllers\Backend\About;

but you use this class without About in your

use namespace App\Http\Controllers\Backend\AboutController;

set namespace to this

namespace App\Http\Controllers\Backend
2 likes
Beginner's avatar
Beginner
OP
Best Answer
Level 1

Hi tomi,

Thanks for trying to help me but i could found the mistake in the route setting.

Like the laravel DOC says:

If your full controller class is App\Http\Controllers\Photos\AdminController, you should register routes to the controller like so:

Route::get('foo', 'Photos\AdminController@method');

So i changed the Route to

Route::get('about', 'About\AboutController@index')->name('about');

Please or to participate in this conversation.