Reputation: 771
My Controller action
public function viewAction() {
$breadcrumbs = array();
$breadcrumbs = array("Home"=>$this->get("router")->generate("admin_home"));
$breadcrumbs = array("View"=>'');
$this->render('UserBundle:Default:view.html.twig',array('breadcrumbs'=>$breadcrumbs));
}
This is my View template and "breadcrumbs" array here is accessible here.
{% extends 'base.html.twig' %}
{% block body %}
<section class="content">
{{ dump(breadcrumbs) }}
</div>
{% endblock body %}
This is my Base template file but i am not able to access breadcrumbs here.
<!DOCTYPE html>
<html>
<head>......
<section>
<div class="breadcrumb">
{{ dump(breadcrumbs) }}
</div>
</section>
{% block body %}{% endblock %}
Note :- I don't want to use any bundle for breadcrumbs.
Upvotes: 0
Views: 1935
Reputation: 82
You can use render(controller(...))
for this.
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
// replace this example code with whatever you need
return $this->render('default/index.html.twig', [
'breadcrumbs' => [
'home' => 'home_url',
'view' => 'view_url',
],
]);
}
public function breadcrumbsAction(array $breadcrumbs = []) {
return $this->render('AppBundle::breadcrumbs.html.twig', [
'breadcrumbs' => $breadcrumbs
]);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{{ render(controller('AppBundle:Default:breadcrumbs', { 'breadcrumbs': breadcrumbs })) }}
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
{{ dump(breadcrumbs) }}
UPDATE: made breadcrumbs dynamic
Upvotes: 1
Reputation: 15676
You can create a block in base.html.twig
:
<!DOCTYPE html>
<html>
<head>......
<section>
<div class="breadcrumb">
{% block breadcrumb %}{% endblock %}
</div>
</section>
{% block body %}{% endblock %}
and fill it in child template just like the body
block:
{% extends 'base.html.twig' %}
{% block body %}
<section class="content">
(...) //content
</div>
{% endblock body %}
{% block breadcrumb %}
{{ dump(breadcrumbs) }}
{% endblock breadcrumb %}
EDIT Also this may help you, but I didn't test it with current Twig version.
Upvotes: 1