したがって、私はsymfony(およびMVCフレームワーク全般)にまったく慣れていないので、私の質問に対する完全な初心者の回答が必要です.
基本的に、現在のページのナビゲーション要素にクラスを追加するコントローラーをセットアップしました。少なくとも理論的には、実際には次の例外エラーが発生します。
"myNewBundle:Page:text-elements.html.twig"で、テンプレートのレンダリング中に例外がスローされました ("The controller must return a response ( Text elements given)")。
問題 (または少なくともその一部) は、コントローラーがテンプレートから切り離されていることだと思います。そのため、呼び出されているページが現在のページであるかどうかはわかりません。
これが私のコントローラーの内容です:
<?php
namespace my\NewBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Template("myNewBundle::definitions.html.twig")
*/
class NavController extends Controller
{
public function renderNavAction($target='/usage', $text='Insert Link')
{
$output = '<a href="' . $this->generateUrl($target) . '" ';
if ($this->getRequest()->get('_route') == $target) $output .= 'class="active"';
$output .= '>' . $text . '</a>';
return $output;
}
}
そして、これは小枝テンプレートの一部であり、それをレンダリングする必要があります:
<ul>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_textElements', 'text' : 'Text elements' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_buttons', 'text': 'Buttons' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_forms', 'text': 'Forms' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_lists', 'text': 'Lists' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_tables', 'text': 'Tables' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_searchBoxes', 'text': 'Search Boxes' })) }}</li>
<li>{{ render(controller('myNewBundle:Nav:renderNav', { 'target': 'my_new_pods', 'text': 'Reusable Pods' })) }}</li>
</ul>
誰かが私が間違っていることを教えてもらえますか? 注: テンプレートの注釈部分は、自分で問題を解決しようとしたときに追加したものです。必要がない場合は、喜んで削除/変更します。