I ran into a similar issue where I wanted to call a function defined in my controller from my view. Although it perplexed me for a while trying to figure out how to get to the controller from the view it turned out to be fairly straightforward.
I hand off an array to my views with data records that the view formats and presents to the user with jQuery DataTables (big duh). One column in the presented UI table is a set of action buttons that need to be created per row based on the content of the data in each of the rows. I guess I could have added the button definitions to the data rows as a column sent to the views but not all views needed the buttons so why? Instead, I wanted the view that needed them add them.
In the controller I pass a reference to the controller itself to the view as in
->with('callbackController', $this)
I called it callbackController as that is what I was doing. Now, inside my view I can either escape to PHP to use $callbackController to access the parent controller as in
<?php echo $callbackController->makeButtons($parameters); ?>
or just use the Blade mechanism
{!! $callbackController->makeButtons($parameters); ?>
It seems to be working fine across multiple controllers and views. I have not noticed a performance penalty using this mechanism and I have one huge table with over 50K rows.
I have not tried to pass on references to other objects (e.g., models, etc) yet but I do not see what that would not work as well
Might not be elegant but it seems to get the job done.
C
(controller) part inMVC
pattern (Laravel is a MVC framework). You should not do that. Instead invoke the model from the controller and expose whatever data you fetched from it in a template variable which then can be used in the Blade view. – Zo