Victor Nuñez
Victor Nuñez

Reputation: 154

Is it possible to send some variable to the blade view in an addColumn ()?

My question is simple if there is any possibility of sending a variable to the blade view through the addColumn() function of the yajra library for datatables, something similar to compact()

Example code:

return datatables()
  ->of($query)
  ->addColumn('Action','Actions.something')
  ->rawColumns(['Action'])
  ->toJson();

I'm looking for something like this:

$data = 'foobar';
return datatables()
  ->of($query)
  ->addColumn('Action','Actions.something', compact('data'))
  ->rawColumns(['Action'])
  ->toJson();

Then in my blade view do something similar to this:

@if($data == 'foobar')
    something...
@else
    something...
@endif

Upvotes: 3

Views: 2239

Answers (2)

T.Palludan
T.Palludan

Reputation: 325

This question is the only one that shows up, when I try to google this problem. I can see that @lewis4u's problem isn't solved yet.

If anyone else experience this, the following code snippet will allow you to access the model variables.

return datatables()
   ->of($query)
   ->addColumn('Action', function($row){
       return view('Actions.something', compact('row'));
   })
   ->rawColumns(['Action'])
   ->toJson();

The key is passing the $row parameter to the function.

Then you can access $row in your something.blade.php view.

Upvotes: 5

Victor Nuñez
Victor Nuñez

Reputation: 154

I found a solution, also thanks to the one who took the trouble to read the question

Code:

$data = 'foobar';
return datatables()
       ->of($query)
       ->addColumn('Action', function() use ($data){
           return view('Actions.something', compact('data'));
       })
       ->rawColumns(['Action'])
       ->toJson();

View (something.blade.php):

@if (isset($data))  
    @if($data == 'foobar')
        <span>true</span>
    @else
        <span>false</span>
    @endif
@endif

Upvotes: 3

Related Questions