无法获得中间件授权工作

I'm trying to run some authorization, but I'm running into trouble on the middleware. I did write the Gate, and it is working flawlessly with the @can blade directive. I want to block the route tho, but I get:

"Trying to get property of non-object " error, and it shows my Gate.

The Gate is:

Gate::define('canCForm', function($user, $form){
return ($user->cargo == $form->validador1);
});

This is written in AuthServiceProvider.

And then route is:

Route::get('/formulariosrecebidos/{form}', 'FormsController@editRecebido')->middleware('can:canCForm,form');

Any idea? I did try to change it a lot of ways, the only way I get it to work is if I make something like 'return ($user->cargo == 'somestring');' So the problem must be in the $form. Altho it is strange because with the @can it is working.