我继承了一个使用 Zend Framwork 和 Redbean Simple Model 开发的 web 项目,我对这些不是太熟悉。
页面似乎是动态生成的以编辑实体。我面临的问题是动态生成的页面部分中的 html 元素似乎具有随机生成的 id 属性。每次我重新加载页面时,元素都会有不同的 id。id 看起来像 fo-1384467680734。
这对我来说是个问题,因为我无法编写任何特定于某些 DOM 元素的 css 或任何 jquery 代码。也许一种解决方案是为我所针对的元素提供特定的 css 类,但我什至不知道这是否可能。
有没有人遇到过这个问题?你找到解决办法了吗?
开发该网站的原始公司不再维护它,我的客户要求我照顾它并在上面修复一些东西。
更新:
更具体地说,网站上有添加新零售商的表格。所以有一个与数据库中的零售商表相关的零售商实体。据我从代码中了解到,表单是根据类中的一些定义动态生成的(参见下面的代码)。
正如您在代码中看到的,零售商有一个省和一个地区。添加新零售商时,表格上有下拉列表可以选择省份和地区。然而,这些下拉列表是“愚蠢的”,我想用一些 jQuery 让它们更“智能”。我希望区域下拉列表仅显示所选省份内的区域。正常执行此操作对我来说是没有问题的,除了这里我不知道如何访问下拉列表。我需要他们有固定的 id 或能够为他们分配类,但我不知道如何在这种情况下做到这一点。
零售商定义:
Class Default_Model_retailers extends Appclass_Redbean_SimpleModel {
/* Db fields properties
*/
public $type = "retailers";
public function getEntityModel() {
return $this;
}
public function getOrderClause()
{
return " 1 ORDER BY name ASC ";
}
public function getListColModel()
{
$cols = ( array(
0 => (object) array('headerLabel' => 'Nom', 'fieldName' =>'name', 'width' => 110),
1 => (object) array('headerLabel' => 'Adresse', 'fieldName' => 'address_', 'width' => 110, 'type' => 'multiFields', 'fieldsList' => 'address.address2'),
//1 => (object) array('headerLabel' => 'Adresse', 'fieldName' => 'address', 'width' => 20),
2 => (object) array('headerLabel' => 'Code Postal', 'fieldName' =>'postcode', 'width' => 20),
3 => (object) array('headerLabel' => 'Province', 'fieldName' =>'province_id', 'width' => 50, 'type'=>'one2one', 'table.label'=>'provinces.abbrev'),
//3 => (object) array('headerLabel' => 'Province', 'fieldName' =>'province_id', 'width' => 50),
4 => (object) array('headerLabel' => 'Ville', 'fieldName' =>'city', 'width' => 50),
5 => (object) array('headerLabel' => 'Lat', 'fieldName' =>'latitude', 'width' => 50),
6 => (object) array('headerLabel' => 'Actions', 'fieldName' =>'actions', 'width' => 100)
));
return $cols;
}
public function getDefinition() {
$exp = (object) array(
'id' => (object) array(
'label' => 'id',
'type' => 'refid'
),
'name' => (object) array(
'label' => 'Nom du revendeur',
'type' => 'text'
),
'address' => (object) array(
'label' => 'Adresse',
'type' => 'text'
),
'address2' => (object) array(
'label' => 'Adresse Ligne 2',
'type' => 'text'
),
'city' => (object) array(
'label' => 'Ville',
'type' => 'text'
),
'province_id' => (object) array(
'label' => 'Province',
'type' => 'select',
'subtype' => 'provinces',
'subtype_label' => 'name_fr'
),
'region_id' => (object) array(
'label' => 'Région administrative',
'type' => 'select',
'subtype' => 'regions',
'subtype_label' => 'name_fr'
),
'phone' => (object) array(
'label' => 'Tél. (XXX) XXX-XXXX ',
'type' => 'text'
),
'postcode' => (object) array(
'label' => 'Code Postal (XXXXXX)',
'type' => 'text',
'filter' => 'postcode'
),
'contact' => (object) array(
'label' => 'Personne Ressource',
'type' => 'text'
),
'latitude' => (object) array(
'label' => 'Latitude',
'type' => 'text'
),
'longitude' => (object) array(
'label' => 'Longitude',
'type' => 'text'
)
);
return $exp;
}
public function getListEditDefinition() {
$exp = (object) array(
'id' => (object) array(
'label' => 'id',
'type' => 'refid'
),
'name' => (object) array(
'label' => 'Nom du revendeur',
'type' => 'text'
)
);
return $exp;
}
public function getProvince()
{
$province = R::load('provinces', $this->province_id);
return $province;
}
}
省和地区实体也有类似的类别。我暂时不会发布该代码,以免这篇文章过于繁重,但如果需要,我可以。