1

I have made a custom middleware named AdminAuth for my admin panel. It's working fine. But I dont get any flash message for success when I create a new entry in database. Here's my code in route file:

Route::group(['middleware' => ['web']], function () {

Route::group(['middleware' => ['admins']], function () {

    Route::get('/admin', function(){
        return view('admin.welcome');
    });

    Route::get('/category', ['as' => 'category.index', 'uses' => 'Admin\CategoryController@index']);
    Route::post('/category/create', ['uses' => 'Admin\CategoryController@postCreate']);
    Route::get('/category/edit/{id}', ['as' => 'category.edit', 'uses' => 'Admin\CategoryController@getEdit']); 


});

});

and code in controller method:

public function postCreate(Request $request)
{
    $rules = [
        'name' => 'required|min:2,max:40|unique:categories'    
    ];

    if ($request->input('parent_id')) {
        $rules = array_add($rules, 'category_pic', 'required');
    }


    $this->validate($request, $rules);

    if ($request->hasFile('category_pic')) {
        $file = $request->file('category_pic');
        $file_name = $file->getClientOriginalName();
        $file_uploaded = $file->move('upload/category', $file_name);
        if (!$file_uploaded) {
            return redirect()
                ->route('category.index')
                ->with('warning', 'Category picture can not be uploaded.');                 
        }
    } 

    $category = new Category();            
    $category->name = $request->input('name');
    $category->slug = str_slug($request->input('name'));
    $category->parent_id = $request->input('parent_id'); 
    $category->description = $request->input('description');
    $category->admin_id= auth()->guard('admins')->user()->id;
    if ($request->hasFile('category_pic')) {
        $category->category_pic = $request->file('category_pic')
                                    ->getClientOriginalName();
    }
    if ($category->save()) {
        return redirect()
            ->route('category.index')
            ->with('success', 'Category created successfully.');                
    } else {
        return redirect()
            ->route('category.index')
            ->with('success', 'Category Not created.');              
    }   

}

and code in view template:

@if(Session::has('success'))
<div class="flash-message flash-message-success">
    {{ Session::get('success') }}
</div>
@endif

I cannot find my mistake. How can I solve this?

I have registered my middleware in kernal like this:

    protected $routeMiddleware = [
    'auth' => \theGrocer\Http\Middleware\Authenticate::class,
    'admins' => \theGrocer\Http\Middleware\AdminAuth::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \theGrocer\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
Alexey Mezenin
  • 158,981
  • 26
  • 290
  • 279
Salman
  • 551
  • 6
  • 18

2 Answers2

2

Add this before return clause and you will see a message:

Session::flash('success', 'Post was created successfully');
Alexey Mezenin
  • 158,981
  • 26
  • 290
  • 279
1

I use this tutorial for multi-authentication.

I, finally, found the solution for flash message:

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
//        \Illuminate\Session\Middleware\StartSession::class,
//        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ];

Remove StartSession and ShareErrosFromSession from the middleware and change Route group middleware -> middlewareGroups. This works for me!

Route::group(['middlewareGroups' => ['web', 'admin']], function () {
Community
  • 1
  • 1
Goran Siriev
  • 663
  • 7
  • 16