1

I can't seem to access $module within the Breadcrumbs instance. How can I access it?

$modules = Module::all();

foreach ($modules as $module)
{
    Breadcrumbs::register($module->name, function($b)
    {
        $b->parent('modules');
        $b->push($module->display_name, url('/module/' . $module->name));
    });
}
ssangki
  • 45
  • 2
  • 6

2 Answers2

2

This is a variable scope issue. To be able to access local variables inside a closure you have to inject them with use(...)

Breadcrumbs::register($module->name, function($b) use ($module)
{
    $b->parent('modules');
    $b->push($module->display_name, url('/module/' . $module->name));
});

This answer provides a very good explanation of the whole topic

Community
  • 1
  • 1
lukasgeiter
  • 147,337
  • 26
  • 332
  • 270
0
$modules = Module::all();

foreach ($modules as $module)
{
    Breadcrumbs::register($module->name, function($b) use ($module)
    {
        $b->parent('modules');
        $b->push($module->display_name, url('/module/' . $module->name));
    });
}

Hence the use keyword.

Blaatpraat
  • 2,829
  • 11
  • 23