我已经阅读了各种 Magento 教程以及有关布局的 Magento 书籍,但我仍然遇到以下问题。
我创建了一个自定义模块,位于 app/code/local/Company/Module/。我在 Company/Module/Block/Ablock.php 中创建了一个 block Company_Module_Block_Ablock。我定义了 <config> ... <frontend><layout><updates><module><file>module.xml在 Company/Module/etc/config.xml 中
config.xml还有
<global>
<blocks>
<module>
<class>Company_Module_Block</class>
</module>
</blocks>
</global>
在这个 module.xml 中我有:
<layout>
<company_module_index_index>
<reference name="content">
<block type="module/ablock" name="myablock" template="module/ablock.phtml" />
</reference>
</company_module_index_index>
</layout>
我创建了一个 Company/Module/controllers/IndexController.php 并在那里定义了一个 indexAction
$this->loadLayout();
$this->renderLayout();
但无论我尝试什么,我都无法显示我的 ablock.phtml。 ablock.phtml 在 app/design/frontend/company/default/template/module/ablock.phtml 中。该主题已启用,并且通常在站点上运行。
我什至尝试更改布局中的 module.xml,因此它甚至不使用模板,甚至不显示任何内容。像这样 -
<reference name="content">
<block type="core/text">
<action method="setText">
<text>Testing</text>
</action>
</block>
</reference>
顺便说一句,自定义主题可以正常工作,否则其他页面的内容会显示在正确的位置。
我有SetEnv MAGE IS DEVELOPER MODE 1在 .htaccess 中,它应该有助于显示警告和其他内容。但是我的 systems.log 和 exceptions.log 没有错误。 (是的日志记录已打开)
有人对如何解决这个问题有任何建议,或者可以发现配置或代码中的错误吗?
我的下一个选择似乎是破解核心模块代码并记录我的 module.xml 被加载和解析的位置,以查看那里发生了什么。
谢谢。
最佳答案
调试布局更新 XML 问题的步骤:
您的 XML 文件(local.xml 或 module.xml)是否正在加载到系统中
您在布局文件中使用的句柄标记是否与为您的请求生成的句柄匹配?
调试第 1 步的最快方法是,在显示错误的开发人员模式下,故意向您的布局更新 XML 文件引入格式不正确的错误。
<layout <!-- notice missing closing taglayout -->
<company_module_index_index>
<reference name="content">
<block type="module/ablock" name="myablock" template="module/ablock.phtml" />
</reference>
</company_module_index_index>
</layout>
如果开发者模式已打开并且您已清除缓存,则加载任何具有上述内容的页面都将导致错误。这让您知道 Magento 正在尝试加载您的 XML 文件。如果页面加载没有问题,这意味着您的 XML 文件位于错误的位置,或者您在 config.xml 中错误配置了 XML。
接下来是检查布局句柄。您需要确保使用的是正确的。您可以通过在loadLayout 和renderLayout 请求 之后调用以下命令来查看用于特定请求的布局句柄
//from a controller action
$this->loadLayout();
$this->renderLayout();
var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
exit("bailing early at ".__LINE__." in ".__FILE__);
我发现上述项目通常可以解决 90% 的布局问题。一定要完成这个过程几次,因为很容易错过一个步骤,并假设某些事情没有问题。冒着我一贯的托儿风险,这也是我创建 Commerce Bug 的部分原因(商业调试扩展)是为了快速、一目了然地提供这些信息,以帮助解决调试问题。
根据您在下面的评论,问题似乎出在您使用的布局句柄上。系统生成的句柄是
module_module_test
但是,您在 layout.xml 中定义的句柄是
company_module_index_index
这是“完整的 Action 名称”句柄。典型的语法是
frontname_controllername_actionname
将句柄更改为 module_module_test,您应该已设置好。
关于xml - Magento 布局 - 内容未呈现/显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048354/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'