我正在尝试编写一个观察员,在下订单时将导出订单数据.我之前没有写过任何模块.基于我对本文的实现:http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/customizing_magento_using_event-observer_method
到目前为止,我只是试图触发一些虚拟代码写入文件.我没有在我的日志中显示任何内容,并且文件未被修改.apache用户拥有该目录的权限.我在Magento设置中禁用了配置缓存.我对一些命名约定感到有些困惑; 我只是试着效仿这个例子.谁知道我哪里出错了?
在magento/app/etc/modules/Feed.xml中:
<?xml version="1.0"?>
<config>
<modules>
<Feed_Sales>
<codePool>local</codePool>
<active>true</active>
</Feed_Sales>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
在magento/app/code/local/Feed/Sales/etc/config.xml中:
<?xml version="1.0"?>
<config>
<global>
<models>
<feedsales>
<class>Feed_Sales_Model</class>
</feedsales>
</models>
<events>
<sales_order_place_after>
<observers>
<feed_sales_order_observer>
<type>singleton</type>
<class>sales/order_observer</class><!-- I've also tried Feed_Sales_Model_Order_Observer here -->
<method>export_new_order</method>
</feed_sales_order_observer>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
在magento/app/code/local/Feed/Sales/Model/Order/Observer.php:
<?php
class Feed_Sales_Model_Order_Observer
{
public function __contruct()
{
}
/**
* Exports new orders to an xml file
* @param Varien_Event_Observer $observer
* @return Feed_Sales_Model_Order_Observer
*/
public function export_new_order($observer)
{
Mage::log("reached export_new_order");
try …Run Code Online (Sandbox Code Playgroud) 任何人都知道如何动态加载共享/静态函数内的控件?函数本身位于mustinherit/abstract类中.(这是VB中的ASP.NET项目)我想做这样的事情:
VB:
Public Shared Function GetWidget(ByVal name As WidgetName) As Control
Select Case name
Case WidgetName.Name1
Return LoadControl("~/Control1.ascx")
Case WidgetName.Name2
Return LoadControl("~/Control2.ascx")
Case WidgetName.Name3
Return LoadControl("~/Control3.ascx")
End Select
End Function
Run Code Online (Sandbox Code Playgroud)
我的C#有点生疏,所以这可能有一些语法错误:
Public Static Control GetWidget(WidgetName name)
{
switch (name)
{
Case WidgetName.Name1:
return LoadControl("~/Control1.ascx");
break;
Case WidgetName.Name2:
return LoadControl("~/Control2.ascx");
break;
Case WidgetName.Name3:
return LoadControl("~/Control3.ascx");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
(WidgetName是一个枚举器.)
我得到"无法在没有类的显式实例的情况下从共享方法或共享成员初始化程序中引用类的实例成员.",但我不明白这个错误.我明白它意味着什么,我只是不明白为什么编译器看不到调用LoadControl是一个显式的类实例.使用LoadControl从文件创建新控件有什么不明确的?我尝试创建一个新的用户控件并初始化它,然后使用LoadControl将其设置为不同的控件无济于事.我也不想做DirectCast,因为我试图将它放在一个共享的,必须(抽象)的类中,因此没有.aspx文件写入<%@ Reference Control="~/SomeControlPath.ascx" %>,所以类名不可用.
我要做的是编写一个静态函数,它接受一些值,并仅根据该控件的源文件位置返回一个控件.最终结果是用户可修改的控件列表.他们获得了一列控件,他们可以根据我指定的可用子控件的静态列表自由添加,删除或重新排序.我没有和这种方法结婚; 它可能在很多方面都是错误的.
是的,我知道那里的静态字符串有代码味道,它实际上看起来并不像那样; 为了提出这个问题,这是一个简化.
欢迎使用C#,VB或简单的英文解释.
是否可以在Python CLI脚本中组合管道输入和TTY提示?例如,运行这个:
import sys
piped_text = None
if not sys.stdin.isatty():
piped_text = sys.stdin.read()
user_in = raw_input('Enter something: ')
if piped_text:
sys.stdout.write(piped_text)
sys.stdout.write(user_in + '\n')
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
~: python mrprompt.py
Enter something: something
something
~: echo foo | python mrprompt.py
Enter something: Traceback (most recent call last):
File "mrprompt.py", line 9, in <module>
user_in = raw_input('Enter something: ')
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)
当我正在寻找的输出是这样的:
~: python mrprompt.py
Enter something: something
something
~: echo foo | python mrprompt.py
Enter something: something
foo …Run Code Online (Sandbox Code Playgroud)