Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

johny1983's avatar

ErrorException: call_user_func() expects parameter 1 to be a valid callback, class 'App\Repositories\Backend\About\News' not found in /var/www/html/App/app/Repositories/BaseRepository.php:98

Hi all, I get the exception above when i visit my Newstable view(CRUD) maybe someone can help.

Greetz Marcus

Stacktrace

Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'call_user_func(...', '/var/www/html/h...', 98, Array)
#1 /var/www/html/heincloud/app/Repositories/BaseRepository.php(98): call_user_func('App\\Repositorie...')
#2 /var/www/html/heincloud/app/Repositories/Backend/About/NewsRepository.php(27): App\Repositories\BaseRepository->query()
#3 /var/www/html/heincloud/app/Http/Controllers/Backend/About/Tablecontrollers/NewsTableController.php(33): App\Repositories\Backend\About\NewsRepository->getForDataTable()
#4 [internal function]: App\Http\Controllers\Backend\About\Tablecontrollers\NewsTableController->__invoke(Object(App\Http\Requests\Backend\About\ManageNewsRequest))
#5 /var/www/html/heincloud/bootstrap/cache/compiled.php(9584): call_user_func_array(Array, Array)
#6 /var/www/html/heincloud/bootstrap/cache/compiled.php(9611): Illuminate\Routing\Controller->callAction('__invoke', Array)
#7 /var/www/html/heincloud/bootstrap/cache/compiled.php(8665): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Backend\About\Tablecontrollers\NewsTableController), '__invoke')
#8 /var/www/html/heincloud/bootstrap/cache/compiled.php(8646): Illuminate\Routing\Route->runController()
#9 /var/www/html/heincloud/bootstrap/cache/compiled.php(8355): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#10 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#11 /var/www/html/heincloud/app/Http/Middleware/SessionTimeout.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#12 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\SessionTimeout->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#14 /var/www/html/heincloud/app/Http/Middleware/RouteNeedsPermission.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#15 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\RouteNeedsPermission->handle(Object(Illuminate\Http\Request), Object(Closure), 'view-backend')
#16 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#17 /var/www/html/heincloud/app/Http/Middleware/LocaleMiddleware.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#18 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\LocaleMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#19 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#20 /var/www/html/heincloud/bootstrap/cache/compiled.php(10177): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#21 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#23 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#24 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#26 /var/www/html/heincloud/bootstrap/cache/compiled.php(3312): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#27 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#29 /var/www/html/heincloud/bootstrap/cache/compiled.php(13749): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#30 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#32 /var/www/html/heincloud/bootstrap/cache/compiled.php(12155): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#33 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#35 /var/www/html/heincloud/bootstrap/cache/compiled.php(13495): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#36 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#38 /var/www/html/heincloud/bootstrap/cache/compiled.php(13432): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#39 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#41 /var/www/html/heincloud/bootstrap/cache/compiled.php(10054): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#42 /var/www/html/heincloud/bootstrap/cache/compiled.php(8356): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#43 /var/www/html/heincloud/bootstrap/cache/compiled.php(8347): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#44 /var/www/html/heincloud/bootstrap/cache/compiled.php(8338): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#45 /var/www/html/heincloud/bootstrap/cache/compiled.php(2575): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#46 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request))
#47 /var/www/html/heincloud/bootstrap/cache/compiled.php(3374): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#48 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#49 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#50 /var/www/html/heincloud/bootstrap/cache/compiled.php(10054): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#51 /var/www/html/heincloud/bootstrap/cache/compiled.php(2519): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#52 /var/www/html/heincloud/bootstrap/cache/compiled.php(2503): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#53 /var/www/html/heincloud/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#54 {main} 

NewsModel

<?php

namespace App\Aboutpages;

use Illuminate\Database\Eloquent\Model;
use App\Aboutpages\Traits\NewsAttribute;   
use Auth;

class News extends Model
{
    use NewsAttribute;
    /*
     *
     */
    public $fillable = ['title', 'content', 'user_id'];
    /*
     *
     */
    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
        $this->table = config('access.news_table');
    }
    /*
     *
     */
    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            if (Auth::check()) {
                $model->user_id = Auth::id();
                $model->user_id = Auth::id();
            }
        });

        static::updating(function($model) {
            if (Auth::check()) {
                $model->user_id = Auth::id();
            }
        });
    }  
}

NewsController

<?php

namespace App\Http\Controllers\Backend\About;

use App\Http\Controllers\Backend\About\NewsController;
use Illuminate\Http\Request; 
use App\Http\Controllers\Controller;
use App\Aboutpages\News;

class NewsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('backend.about.news.index');
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('backend.about.news.create');
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required',
            'content' => 'required',
        ]);

        News::create($request->all());
        return redirect()->route('admin.news.index')
                         ->withFlashSuccess(trans('success','News created successfully'));
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $news
     * @return \Illuminate\Http\Response
     */
    public function show($news)
    {
        $news = News::find($news);
        return view('backend.about.news.show',compact('news'));
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $news
     * @return \Illuminate\Http\Response
     */
    public function edit($news)
    {
        $news = News::find($news);
        return view('backend.about.news.edit')->with('news', $news);
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $news
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $news)
    {
        $this->validate($request, [
            'title'   => 'required',
            'content' => 'required',
        ]);

        News::find($news)->update($request->all());

        return redirect()->route('admin.news.index')
                        ->withFlashSuccess(trans('success','News updated successfully'));
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $news
     * @return \Illuminate\Http\Response
     */
    public function destroy($news)
    {
        $news = News::where('id',$news)->first();

        if ($news != null) 
        {
            $news->delete();
            return redirect()->route('admin.news.index')->withFlashSuccess(trans('Successfully deleted!!'));
        }
         return redirect()->route('admin.news.index')->withFlashDanger(trans('Wrong ID!!'));

    }
}

NewsTableController

<?php

namespace App\Http\Controllers\Backend\About\Tablecontrollers;

use App\Http\Controllers\Controller;
use Yajra\Datatables\Facades\Datatables;
use App\Repositories\Backend\About\NewsRepository;
use App\Http\Requests\Backend\About\ManageNewsRequest;

/**
 * Class NewsTableController.
 */
class NewsTableController extends Controller
{
    /**
     * @var NewsRepository
     */
    protected $news;
    /**
     * @param NewsRepository $about
     */
    public function __construct(NewsRepository $news)
    {
        $this->news = $news;
    }
    /**
     * @param ManageNewsRequest $request
     *
     * @return mixed
     */
    public function __invoke(ManageNewsRequest $request)
    {
        return Datatables::of($this->news->getForDataTable())
            ->addColumn('actions', function ($news) {
                return $news->action_buttons;
            })
            ->withTrashed()
            ->make(true);
    }
}

NewsRepository

<?php

namespace App\Repositories\Backend\About;

use App\Aboutpages\About;
use App\Repositories\Repository;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;

/**
 * Class NewsRepository.
 */
class NewsRepository extends Repository
{
    /**
     * Associated Repository Model.
     */
    const MODEL = News::class;
    /**
     * @param string $order_by
     * @param string $sort
     *
     * @return mixed
     */
    public function getForDataTable()
    {
        return $this->query()
            ->select([
                config('access.news_table').'.id',
                config('access.news_table').'.title',
                config('access.news_table').'.content',
                config('access.news_table').'.user_id',
        ]);
    }
}
0 likes
0 replies

Please or to participate in this conversation.