2013-11-14 3 views
0

Я унаследовал веб-проект, который был разработан с использованием Zend Framwork и Redbean Simple Model, и я не слишком знаком с ними.RedBean простая модель случайных идентификаторов

Страницы, как представляется, генерируются динамически для редактирования объектов. Проблема, с которой я сталкиваюсь, состоит в том, что элементы html в динамически сгенерированных разделах страниц имеют случайно генерируемые атрибуты идентификаторов. Каждый раз, когда я перезагружаю страницу, элементы будут иметь разные идентификаторы. Идентификатор выглядит как fo-1384467680734.

Это проблема для меня, так как я не могу написать какой-либо css или какой-либо код jquery, характерный для некоторых элементов DOM. Возможно, одним из решений было бы дать конкретные классы CSS для элементов, на которые я нацеливаюсь, но я даже не знаю, возможно ли это.

Неужели кто-нибудь сталкивался с этой проблемой? Вы нашли решение?

Оригинальная компания, которая разработала веб-сайт, больше не поддерживает ее, и мой клиент попросил меня позаботиться об этом и исправить несколько вещей на нем.

UPDATE:

Чтобы быть более точным, есть форма на веб-сайте для добавления новых ритейлеров. Таким образом, существует объект Retailer, который связан с таблицей розничных продавцов в базе данных. Насколько я понимаю из кода, форма генерируется динамически на основе некоторых определений в классе (см. Код ниже).

Как вы можете видеть в коде, розничный торговец имеет провинцию и регион. В форме есть выпадающие списки в форме, чтобы выбрать провинцию и регион при добавлении нового розничного продавца. Однако эти выпадающие списки «тупые», и я хотел бы сделать их более «интеллектуальными» с некоторым jQuery. Я бы хотел, чтобы в раскрывающемся списке региона отображались только те регионы, которые находятся в пределах выбранной провинции. Для меня было бы проблемой не делать это нормально, кроме как здесь я не знаю, как получить доступ к раскрывающимся спискам. Мне нужно, чтобы они имели фиксированный идентификатор или могли назначать им классы, но я не знаю, как это сделать в этом контексте.

Retailer Определение:

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; 
    } 
} 

Есть также аналогичные классы для провинции и организаций регионов. Я не буду публиковать этот код, чтобы не сделать этот пост слишком тяжелым, но я мог бы, если понадобится.

ответ

0

Прежде всего эта проблема, похоже, больше связана с разработкой HTML, а затем с RedBean. Идентификатор элемента не обязательно должен быть идентификатором Bean. Во-вторых, я бы поспорил с CSS-классами вместо ids, таким образом вы можете использовать стили CSS по нескольким элементам или, по крайней мере, объединить общее форматирование для некоторых из них.

без какого-либо дальнейшего кода, я думаю, будет трудно шанс помочь вам здесь

UPDATE: Я еще не работал с Zend Framework, но он использует виджеты или аналогичный для создания элементов. Таким образом, ваша предоставленная модель определяет общие свойства для виджетов, как кажется.Так как вы сказали, вы создаете Dropdowns, может быть, где-то в коде проход, как это существующий:

$retailer = new Zend_Form_Element_Select('retailer'); 
or 
$retailer = $form->addElement('select', ...); 

так быстрый поиск Google придумал такие вещи, как следующий настроить идентификатор:

$retailer->setAttrib('id', 'retailerBox'); 
$retailer = $form->addElement('select', 'attribs' => array(
          'id'=>'retailerBox', 
         ), ...); 

Вот несколько ссылок, которые я нашел, который, возможно, поможет вам с вашей задачей

Zend_Form QuickStart

Zend Form Decorators

+0

Проблема в том, что я не знаю, как назначать классы этим динамически сгенерированным элементам HTML, и я не знаю, как назначить им определенные идентификаторы. Ты знаешь как? См. Обновление в моем исходном сообщении. Я добавил некоторые подробности о том, что я хочу сделать, и о некотором коде. –

+0

грустно Я не в Zend Framework, но взгляните на мой измененный ответ, может быть, это поможет вам почувствовать, что искать – zewa666

Смежные вопросы