我正在尝试将主导航与子菜单结合使用以进行更具体的导航.
在我的布局中,我正在调用视图助手,如下所示:
$this->navigation('main_navigation')->menu()
Run Code Online (Sandbox Code Playgroud)
在我看来,我这样称呼它:
$this->navigation('sub_navigation')->menu()
Run Code Online (Sandbox Code Playgroud)
问题是每当我多次调用navigation()视图助手时,它只会在两个地方输出第二个.换句话说,它的打印subnav为两个主要的资产净值和在subnav菜单.
我的合并配置如下所示:
'navigation' => array(
'main' => array(
'home' => array(
'label' => 'Home',
'route' => 'myroute',
),
'somepage' => array(
'label' => 'Me',
'route' => 'somepage'
)
),
'sub' => array(
'test' => array(
'label' => 'Test',
'route' => 'myroute',
'action' => 'test'
),
'other-test' => array(
'label' => 'Other Test',
'route' => 'myroute',
'action' => 'other-test'
) …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一些在TYPO3 6中使用的扩展.
在一个视图中,我有包含日期字段的数据库记录.我可以输出以下日期值:
<f:format.date format="d.m.Y H:i:s">{record.validend}</f:format.date>
Run Code Online (Sandbox Code Playgroud)
但是,我需要一个已翻译的消息,所以我想使用translate视图助手并将格式化的日期放在arguments属性中.到目前为止没有成功.
我试过了:
<f:translate key="{msg_id}" arguments="{0: code, 1: {f:format.date(date: record.validend, format: 'd.m.Y H:i:s')}}" htmlEscape="0" />
Run Code Online (Sandbox Code Playgroud)
…和…
<f:translate key="{msg_id}" arguments="{0: code, 1: {record.validend -> f:format.date(format: 'd.m.Y H:i:s')}}" htmlEscape="0" />
Run Code Online (Sandbox Code Playgroud)
...遵循本指南:http://forge.typo3.org/projects/typo3v4-mvc/wiki/Fluid_Inline_Notation
但是,我的符号中似乎存在一些语法错误,迫使流体将整个事物解释为字符串,从而导致错误,导致参数attribut应该是一个数组.
谁能告诉我,我想要的是什么,我需要什么语法?
最好的祝福
基督教
更新 TYPO3 后,我收到TYPO3Fluid\Fluid\Core\ViewHelper\Exception“传递给 ViewHelper 的未声明参数......有效参数是”。
我的问题需要一些设置,所以请耐心等待:
我成为了一个转换,使用View Helpers从模型中获取数据,而不是将其全部洒在控制器上(帽子提示给Eric Clemmons).它在那里更具可重用性和灵活性.我就喜欢!
我通常做的是在index.phtml中布置模板,然后当我需要从模型中获取内容时,将该片段放在detail.phtml中,因此逻辑尽可能远.
但是,我开始看到需要重用的变量.例如,类别名称.现在,您不希望使用视图助手来反复从模型中获取cat名称.虽然你可以缓存它,但显然太麻烦了.
所以我开始在detail.phtml中使用几行php来设置变量.它再也闻不到了.观点不应该有太多的逻辑.
那你说什么呢?如果var被重用,把它放在控制器中?或者不介意在视图中设置几个变量?
编辑:Alan Storm问了一个viewhelpers的例子:
detail.phtml:
<ul id="productList">
<? foreach($this->getProductById($id) as $product) : ?>
<li><?= $this->escape($product['name']) ?></li>
<? endforeach; ?>
</ul>
Run Code Online (Sandbox Code Playgroud)
(支持自己攻击反短标签)
另一个编辑:我看到没有2个正确的答案.那好吧...
我正在建立一个rails 3应用程序,我正在使用设计来管理auth逻辑,但我想知道是否有一个帮助方法来检查当前用户是否拥有一个具有关联的对象(一个记录到db)"has_many ".
例:
User
has_many :reports
Run Code Online (Sandbox Code Playgroud)
我有这种情况:
<%= current_user.id == report.user.id ? "Personal Report" : report.user.username %>
Run Code Online (Sandbox Code Playgroud)
可以创建类似的东西:
<%= owned ? "yes" : "no" %>
Run Code Online (Sandbox Code Playgroud)
谢谢
我想创建一个自定义视图助手重用一套标准的网页链接在几个视图脚本,并且我有麻烦从路由获取的URL.如果ZF2 url帮助程序url($name, $urlParams, $routeOptions, $reuseMatchedParams在视图脚本本身中编码,则它会从路径参数生成URL.但是,如果我将相同的代码放在我的自定义帮助器中,我会得到以下消息:
Call to undefined method myCustomHelperPath::url()
Run Code Online (Sandbox Code Playgroud)
我知道有一些控制器插件可以从路由中获取URL,但我试图在视图助手中获取URL,而不是控制器.在我的例子中,我想在我的自定义视图助手中使用ZF2视图助手.
如何使用工厂注册View helper?
View\Helper\GenerateAnchor::class => GenerateAnchorFactory::class,
Run Code Online (Sandbox Code Playgroud) 我想格式化 JSON 响应的值,使其与视图中的显示方式相同。
考虑对象,user = { id: 323 };创建了一个辅助方法 ( format_name) 以使该值在视图中更容易呈现:
<div>
<%= format_name(user[:id]) %>
<% # appears as: <span class="user" data-user-id="323">John Doe</span> %>
</div>
Run Code Online (Sandbox Code Playgroud)
由于已知原因,这在控制器中不可用。以下失败:
class ApplicationHelper
def format_name
# ...
end
end
class UserController < ApplicationController
def view
# ...<setup user info>...
user_formatted = {
id: user[:id],
formatted: format_name(user[:id]) # helper method
}
respond_to do |format|
format.json { render json: user_formatted.to_json }
end
end
end
Run Code Online (Sandbox Code Playgroud)
我很好奇如何在控制器中使用辅助方法。
我试过了:
view_context.format_name _view.json.erb)来调用助手并渲染 jsonhelper_method :format_name …我的 FLUID 模板中有三张图片,我想随机显示这三张图片中的一张。在 FLUID 模板中是否有任何方法可以做到这一点,或者这是不可能的,我必须另辟蹊径?
我尝试了 TYPO3 扩展“VHS”来生成一个随机数:
{v:random.number(minimum: 1, maximum: 3, minimumDecimals: 0, maximumDecimals: 0)}
Run Code Online (Sandbox Code Playgroud)
在前端,我看到生成的数字。但是如何将随机数设置为变量以在 if-else-condition 中使用它?
有几个示例可以编写自定义ViewHelper和不同的处理方式。我已经看到了render()和renderStatic的示例(例如,在开发自定义ViewHelper中)。
在24个Fluid Tips中有一个解释,但我不理解,也无法为我弄清楚为什么有2个函数以及应该在哪里使用。
零散的更改(不赞成使用ViewHelpers上的Render方法参数)和各地的零碎信息使在这里很难获得清晰的答案。开发Custom ViewHelper中的示例是否是最新的和最佳实践?