我有一个 Controller ,我在其中创建一个带有两个下拉列表的表单。
当我呈现我的 View 时,我希望在页面的顶部和底部有相同的表单元素。问题是表单元素(下拉列表)仅显示在页面顶部,即使我要求 twig 也将它们也放在底部。
这是我想要的:
1 和 2 是下拉列表。我想在页面的顶部和底部复制它。
关于如何做到这一点有什么想法吗?
顶部内容和底部内容,其中两个下拉列表位于一个单独的 twig 文件 (searchPanel.html.twig) 中,并且该文件包含在页面中
{% include "MyBundle:Search:searchPanel.html.twig" %}
这是 searchPanel.html.twig
<div class="searchPanel">
<form action="{{ path }}" method="POST" {{ form_enctype(form) }}>
Papers per page
{{ form_widget(form.papers_per_page, { 'class': 'ppp'}) }}
/ Sort by
{{ form_widget(form.sort_by, { 'class': 'sort'}) }}
{{ form_rest(form) }}
/ Papers ({{ papers_number }} results)
<input type="submit" class="updateSearchResults" value="Update"></input>
</form>
最佳答案
您的方法中的一个问题是 Symfony 的表单组件将呈现带有 id 的表单元素,如果您在页面上两次呈现相同的表单,这些元素将被复制。您可能还会遇到 csrf_token 的问题。要点是表格不能被复制。
这是我会做的。在不使用 Symfony\Form 的情况下创建一个包含分页器表单的 Twig 模板,即静态创建所有表单元素并将其传递给分页器对象(或数组)以获取数据,而不是使用 form_widget()。像这样:
<form action="{{ path(app.request.attributes.get('_route') }}" method="POST">
<select name="paginator[per_page]">
{% for per_page in paginator.papers_per_page %}
<option value=""{{ per_page }}">{{ per_page }}</option>
{% endfor %}
</select>
</form>
表单 Action 会自动将数据提交到你当前的路由,所以你可以将它嵌入到不同的 Action 中,它会把数据提交到同一个 Action 。在 POST 上,您可以只使用后期数据创建一个分页器对象,然后将其添加为表单的数据。之后,您只需像往常一样使用 isValid()。
在您的 Controller 中,您可以像这样获取数据:
use Symfony\Component\HttpFoundation\Request;
// ...
public function PaperController()
{
public function listAction(Request $request)
{
if ($request->getMethod() == 'POST') {
$data = $request->request->get('paginator');
$paginator = new Paginator($data);
$form = new PaginatorFormType();
$form->setData($paginator);
if ($form->isValid()) {
// ...
}
}
}
}
您可以像这样轻松地将表单嵌入到您的 View 中:
{{ include 'AcmeDemoBundle:Form:paginator.html.twig' with { 'paginator': paginator } }}
基本上,您只需在 Controller 中使用表单组件来进行验证。如果您想设置一些默认值或添加其他参数,您可能需要创建一个 macro来自该模板,但对于您的用例,这应该足够了。也许其他人有更好的解决方案,但这就是我在我的一个项目中遇到类似问题的方式。
关于php - Symfony2 表格 : How to render the same element twice in the same view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682852/
我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c
我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda
我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315
我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.
有没有办法快速将表格格式的ruby哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
为什么我不能这样做:classCreateModels是否有其他方法可以使数组(“apples”)成为Fruit类实例的属性? 最佳答案 在Rails4中并使用PostgreSQL,您实际上可以在数据库中使用数组类型:迁移:classCreateSomething 关于ruby-on-rails-为什么我不能在Rails的表格中创建一个数组作为列?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu
如何在列名为Lars的表中选择最后一个日期。我试过这个::dato,AND:name=>:name",:date=>Date.last,:name=>"Lars")%>我试过这个:输出:[#]我只需要一个日期时间格式,例如:2011-02-1523:53:28我该怎么做? 最佳答案 您必须按日期排序并选择一条记录:您也可以通过限制为单个记录来实现此目的:Reklamer.where(name:'Lars').order('datoDESC').limit(1)如果您只想要最后一个条目的最后日期,您可以这样做:Reklamer.whe
我正在尝试获取GoogleDrive电子表格的内容,但我似乎找不到可以轻松完成此操作的gem。我试过google-drive-ruby,但它涉及一个步骤,我必须从Google的网站获取授权token。这不是很有帮助,因为我必须在服务器端完成所有这些工作。显然在以前版本的gem中有一个登录方法,但被删除了。有什么办法吗?我必须使用OAuth吗?获取token并将该token传递到google-drive-ruby? 最佳答案 我设法在Reddit上得到了答案。您需要一个服务帐户并与您的服务应用程序的电子邮件共享文档。p12key也必须
我正在尝试使用“电子表格”解析Excel电子表格。如何获取每一行的背景颜色? 最佳答案 book=Spreadsheet::Workbook.newsheet=book.create_worksheet:name=>'Name'format=Spreadsheet::Format.new:color=>:blue,:pattern_fg_color=>:yellow,:pattern=>1sheet.row(0).set_format(0,format)#forfirstcellinfirstrow或sheet.row(0).def