从 magento 字段中的数组中删除值
Remove value from array in magento field
我有一个 magento 自定义集合,集合中的每个项目在前端都有自己的登录页面(collection/view/index/id/12 等)并在管理后端进行管理。
我有一个控制器操作,允许用户“关注”每个项目,用户 ID saved/added 到项目字段值。
下面Field/attribute的值的例子
//Follow Action Working..
//Users ID added to field when followAction accessed via a follow link.
$model2 = Mage::getModel("userprofiles/userprofiles")->load($id);
$FollowProfiles = $model2->getFollowProfiles();
$model->setFollowProfiles(''.$FollowProfiles.''.$myprofileid.',');
$model->save();
Mage::getSingleton('core/session')->addSuccess('Sucessfully followed.');
$this->_redirectReferer();
//saves as
123,321,220,125,
跟随动作按预期工作。然而,试图获得取消关注的行动是不想工作的。下面的代码。
//Get field/attribute values ie 123,234,345,456,
$FollowProfilesArray = array($model2->getFollowProfiles());
//$profileid will be current users id
//used to remove user id from array
$remove_from_array = array_diff($FollowProfilesArray,array($profile_id,));
foreach($remove_from_array as $key => $value){
$select .= ''.$value.',';
}
//saves all ids except the removed users id
$model->setFollowProfiles($select);
基本上由于某些原因,当使用 array($model2->getFollowProfiles()) 时不允许从字段值中删除用户 ID,将其保存为 123,234,345,456,
但是..
当我将数组设置为硬编码值时 array(123,234,345,456,) 它起作用并删除了指定的 ID。
为什么 array($model2->getFollowProfiles()) 不起作用,因为它等于 123,234,345,456,
我是否必须内爆,爆炸 $model2->getFollowProfiles() 或其他东西..??
好的,解决了。下面的代码。
已更改
$FollowProfilesArray = array($model2->getFollowProfiles());
至
//explode out the attribute value
$FollowProfilesArray = explode(",","".$model2->getFollowProfiles()."");
并更改
foreach($remove_from_array as $key => $value){
$select .= ''.$value.',';}
至
//so if $value is NULL save no value id, stoppped the adding of , to the attribute value
foreach($remove_from_array as $key => $value){
if($value == NULL) {
//$select .= ''.$value.',';
}else{
$select .= ''.$value.',';
}
}
所以现在在调用 unfollowAction 时,指定的 ID 将从属性值中删除,但保留任何其他 ID 值。
我有一个 magento 自定义集合,集合中的每个项目在前端都有自己的登录页面(collection/view/index/id/12 等)并在管理后端进行管理。
我有一个控制器操作,允许用户“关注”每个项目,用户 ID saved/added 到项目字段值。
下面Field/attribute的值的例子
//Follow Action Working..
//Users ID added to field when followAction accessed via a follow link.
$model2 = Mage::getModel("userprofiles/userprofiles")->load($id);
$FollowProfiles = $model2->getFollowProfiles();
$model->setFollowProfiles(''.$FollowProfiles.''.$myprofileid.',');
$model->save();
Mage::getSingleton('core/session')->addSuccess('Sucessfully followed.');
$this->_redirectReferer();
//saves as
123,321,220,125,
跟随动作按预期工作。然而,试图获得取消关注的行动是不想工作的。下面的代码。
//Get field/attribute values ie 123,234,345,456,
$FollowProfilesArray = array($model2->getFollowProfiles());
//$profileid will be current users id
//used to remove user id from array
$remove_from_array = array_diff($FollowProfilesArray,array($profile_id,));
foreach($remove_from_array as $key => $value){
$select .= ''.$value.',';
}
//saves all ids except the removed users id
$model->setFollowProfiles($select);
基本上由于某些原因,当使用 array($model2->getFollowProfiles()) 时不允许从字段值中删除用户 ID,将其保存为 123,234,345,456,
但是..
当我将数组设置为硬编码值时 array(123,234,345,456,) 它起作用并删除了指定的 ID。
为什么 array($model2->getFollowProfiles()) 不起作用,因为它等于 123,234,345,456,
我是否必须内爆,爆炸 $model2->getFollowProfiles() 或其他东西..??
好的,解决了。下面的代码。
已更改
$FollowProfilesArray = array($model2->getFollowProfiles());
至
//explode out the attribute value
$FollowProfilesArray = explode(",","".$model2->getFollowProfiles()."");
并更改
foreach($remove_from_array as $key => $value){
$select .= ''.$value.',';}
至
//so if $value is NULL save no value id, stoppped the adding of , to the attribute value
foreach($remove_from_array as $key => $value){
if($value == NULL) {
//$select .= ''.$value.',';
}else{
$select .= ''.$value.',';
}
}
所以现在在调用 unfollowAction 时,指定的 ID 将从属性值中删除,但保留任何其他 ID 值。