我想知道是否每次加载页面时都会触发一次事件,然后再渲染为magento中的html?
如果要为不依赖于用户会话的半静态属性执行某些业务逻辑,这可能很有用.
例如,我将使用它将规范标签传递给magento的标题.
在对单个项目进行修改后重新索引单个项目的正确方法是什么.
示例上下文:
我们公司依赖名为Stone Edge的第三方库存管理平台.我们还在多个店面销售商品,包括Magento,Amazon,Ebay和Buy.com
每隔10分钟,Stone Edge将从网站下载所有订单,然后将库存调整发送回我们的Magento商店.这是通过向存储在我们的网络服务器上的php脚本发送一个简单的http请求来完成的,该脚本具有一系列键值对,用于库存中自上次更新以来库存发生变化的每个项目.
在对这些项目中的每一项上完成保存功能之后,然后对该项目进行重新索引,以便不反映更新时间与下一次全站点重新索引之间的0库存.
我找到了关于如何重新索引项目的Magento论坛讨论:
$item->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction($item,Mage_CatalogInventory_Model_Stock_Item::ENTITY,Mage_Index_Model_Event::TYPE_SAVE);
Run Code Online (Sandbox Code Playgroud)
在这套说明之前你会看到类似的东西
$item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($entityid);
$item->addQty($change);
$item->save();
Run Code Online (Sandbox Code Playgroud)
然而,在完成此之后,问题变得明显.项目本身已重新编制索引,但如果它们是分组产品的成员,则组产品未更新.
我需要解决一个明显的问题.解决这个问题的最佳方法是什么?
如果我偶然提出答案,我会发一个答案.
例子
mylayoutfile.xml
<layout>
<default>
<reference name="header">
<block type="mynamespace_mymodule/view" name="mynamespace_mymodule" output="toHtml" template="mymodule/html/view.phtml">
<action method="setTest"><param1>myparam1</param1><param2>myparam2</param2></action>
</block>
</reference>
</default>
</layout>
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/ myNameSpace对象/ Mymodule中/座/ View.php
class Mynamespace_Mymodule_Block_View extends Mage_Core_Block_Template{
public $test = "before any params";
public function setTest($passedparam1,$passedparam2){
$this->test = $passedparam1 ." ". $passedparam2;
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/设计/.../.../ mymodule中/ HTML/view.phtml
<?php
echo "<pre>";
print_r($this->test); //myparam1 myparam2
echo"</pre>";
die();
Run Code Online (Sandbox Code Playgroud)
说明
mylayoutfile是通过模块config.xml在更新中编译的
mynamespace_module的块类前缀也在模块config.xml中定义
mynamespace_module/view设置为块类型并实例化,并设置view.phtml的输出文件
调用父节点块的方法setTest传递两个参数,其值为myparam1和myparam2.
在setTest函数内部,类参数"test"设置为等于"myparam1 myparam2"
模板文件app/design /.../.../ mymodule/html/view.phtml被加载,我们回显$ this-> test的值($ this指的是早期实例化的块类Mynamespace_mymodule_Block_View)
问题很简单.如果我知道我的产品的sku而没有别的,我怎么能检索该项目的URL.这对于第三方集成通常很有用,其中远程服务的唯一ID不匹配产品ID.或者您可能想要一个搜索框来仅通过sku搜索.
在PHP中至少在我的实例中,使用魔术方法是很常见的 - 至少在定义核心类时,大多数其他内容都将从中扩展.
php中的魔术方法以常规方法的规范以特殊方式运行.例如,我书中最常用的方法之一就是__construct()
每次加载一个类时都会执行该构造.因此,例如,如果您希望您的类自我介绍,您可能会执行以下操作:
<?php
class Person
{
function __construct($name)
{
$this->name = $name;
$this->introduceYourself();
}
public function introduceYourself()
{
//if $this->name then echo $this->name else echo i dont have name
echo $this->name ? "hi my name is " . $this->name : "error i dont have name";
}
}
$dave = new Person('dave');
Run Code Online (Sandbox Code Playgroud)
通常,您不会将某些内容传递给构造.
我经常遇到的其他一些包括:
__call()允许您更改调用方法的默认方式.一个很好的例子是覆盖,它允许您在使用任何以单词get开头的方法时获取属性值,或者在方法调用以单词set开始时设置属性值.
__get()用作类属性的重载,我不使用,但有人可能会感兴趣.
__set()用作类属性的重载,我不使用,但有人可能会感兴趣.
__destruct()我也不使用,只要没有对特定对象的其他引用,或在关闭序列期间以任何顺序调用.
问题
在javascript里面有这样的神奇方法吗?
有新的javascript程序员应该知道的任何隐藏的宝石,就像我上面描述的PHP吗?
我一直在使用xDebug运行一些代码,并且不断注意_underscoreCache作为kv对的数组:
object
collection
is_default
default_group_id
front
store_id
action
session_hosts
controller_action
request
secure
visitor_data
website
quote
items_collection
parent_item_id
quote_id
item_id
product_id
code
attributes
website_id
attribute_set_id
additional_attribute_table
attribute_codes
is_global
skip_confirmation_if_email
confirmation
visibility
is_salable
stock_item
udropship_vendor
custom_vars_combined
password_enc
vendor_name
use_local_stock
is_recurring
customer_group_id
date
product_collection
product_name
product_type_id
product_status_changed
is_changed_websites
product_changed_websites
license_key
license_key
license_status
license_expire
server_restriction
products
module_name
use_config_manage_stock
is_in_stock
stock_status
product_type
sku
name
weight
tax_class_id
cost
base_cost
is_qty_decimal
quote_item
product
message
item
is_super_mode
qty_to_add
is_child_item
has_error
item_is_qty_decimal
has_qty_option_update
item_qty
orig_qty
use_config_min_sale_qty
use_config_max_sale_qty
suppress_check_qty_increments
use_config_enable_qty_increments …
Run Code Online (Sandbox Code Playgroud) 示例主题:{this} {is} a {my} {example} {{subject}}要返回:
array(
[1] => 'this'
[2] => 'is'
[3] => 'my'
[4] => 'example'
[5] => 'subject'
Run Code Online (Sandbox Code Playgroud)
这在php模板引擎中常见,引用smarty和twig http://www.smarty.net/ http://twig.sensiolabs.org/
props: {
user: {},
},
Run Code Online (Sandbox Code Playgroud)
我有一个user
属性是一个JSON字符串.我想通过HTML中的prop值将其转换为对象.
这是如何实现的?
我会假设每个模型保存后都有一个事件.这是如何格式化的,有没有办法记录所有这些事件?
如果在您要扩展的模块中没有声明标准事件,这将非常有用.
对于我的播种机,我希望能够截断我的表,不幸的是,某些表受外键约束,此外,有些表还启用了软删除。
为了解决无法基于软删除截断表的问题,我只是说foreach Model :: all()删除该模型。也许还有更好的方法吗?但是,对于具有软删除功能的表,实际上并没有删除记录。当我真的要删除记录时,如何解决软删除?