【发布时间】:2016-04-07 09:15:21
【问题描述】:
我在我的一个项目中使用 Asgard CMS。
我正在尝试打印带有自定义类的菜单。
默认情况下,{{ Menu::get('main') }} 打印出带有 Bootstrap 类的主菜单。但是,由于我的主题,我想使用不同的类。
在他们的文档中,他们说通过创建Presenter你可以做到这一点。但是,当我创建一个名为 CustomPresenter.php 的 Presenter 和一个扩展 Pingpong/menus/Presenters/Presenter.php 的类 CustomPresenter 时,将它放在 /vendor/xxx/ 下并在我的刀片中通过 {{ Menu::render('main', 'XXX/CustomPresenter') }} 调用它,Laravel 给出 Class 'XXX\未找到 CustomPresenter' 错误。
这是我在 CustomPresenter 中使用的代码:
namespace XXX;
use Pingpong\Menus\Presenters\Presenter;
class CustomPresenter extends Presenter
{
/**
* {@inheritdoc }
*/
public function getOpenTagWrapper()
{
return PHP_EOL . '<section class="top-bar-section">' . PHP_EOL;
}
/**
* {@inheritdoc }
*/
public function getCloseTagWrapper()
{
return PHP_EOL . '</section>' . PHP_EOL;
}
/**
* {@inheritdoc }
*/
public function getMenuWithoutDropdownWrapper($item)
{
return '<li'.$this->getActiveState($item).'><a href="'. $item->getUrl() .'">'.$item->getIcon().' '.$item->title.'</a></li>';
}
/**
* {@inheritdoc }
*/
public function getActiveState($item)
{
return \Request::is($item->getRequest()) ? ' class="active"' : null;
}
/**
* {@inheritdoc }
*/
public function getDividerWrapper()
{
return '<li class="divider"></li>';
}
/**
* {@inheritdoc }
*/
public function getMenuWithDropDownWrapper($item)
{
return '<li>
<a href="#" class="sf-with-ul">
'.$item->getIcon().' '.$item->title.'
</a>
<ul style="display: none;">
'.$this->getChildMenuItems($item).'
</ul>
</li>' . PHP_EOL;
;
}
}
【问题讨论】: