Очень нужна помощь. Я не особо в пхп, а поисковики не выдают адекватных результатов. Вот есть форма создания новой темы на форуме. Как в интересующий меня div вставить поле input(text) с указанием параметров? PHP: <?php class Forum_Form_Topic_Create extends Engine_Form { public function init() { $settings = Engine_Api::_()->getApi('settings', 'core'); $this->setAction(Zend_Controller_Front::getInstance()->getRouter()->assemble(array())); $this->setMethod("POST"); $this->setAttrib('name', 'forum_post_create'); $this->addElement('Text', 'title', array( 'allowEmpty' => false, 'required' => true, 'filters' => array( new Engine_Filter_Censor(), ), )); $viewer = Engine_Api::_()->user()->getViewer(); $allowHtml = (bool) $settings->getSetting('forum_html', 0); $allowBbcode = (bool) $settings->getSetting('forum_bbcode', 0); if( !$allowHtml ) { $filter = new Engine_Filter_HtmlSpecialChars(); } else { $filter = new Engine_Filter_Html(); $filter->setForbiddenTags(); //$allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission($viewer->level_id, 'forum', 'commentHtml'))); if( !$viewer->getIdentity() ) { $allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission(4, 'forum', 'commentHtml'))); }else{ $allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission($viewer->level_id, 'forum', 'commentHtml'))); } $filter->setAllowedTags($allowed_tags); } if( $allowHtml || $allowBbcode ) { $upload_url = ""; if(Engine_Api::_()->authorization()->isAllowed('album', $user, 'create')){ $upload_url = Zend_Controller_Front::getInstance()->getRouter()->assemble(array('action'=>'upload-photo'),'forum_photo',true); } $editorOptions = array( 'upload_url' => $upload_url, 'bbcode' => $settings->getSetting('forum_bbcode', 0), 'html' => $settings->getSetting('forum_html', 0) ); if (!empty($upload_url)) { $editorOptions['plugins'] = array( 'table', 'fullscreen', 'media', 'preview', 'paste', 'code', 'image', 'textcolor', 'jbimages', 'link' ); $editorOptions['toolbar1'] = array( 'undo', 'redo', 'removeformat', 'pastetext', '|', 'code', 'media', 'image', 'jbimages', 'link', 'fullscreen', 'preview' ); } $this->addElement('TinyMce', 'body', array( 'disableLoadDefaultDecorators' => true, 'editorOptions' => $editorOptions, 'required' => true, 'allowEmpty' => false, 'decorators' => array('ViewHelper'), 'filters' => array( $filter, new Engine_Filter_Censor(), ), )); } // Photo $this->addElement('File', 'photo', array( 'label' => 'Attach a Photo', 'size' => '0', )); $this->getElement('photo')->getDecorator('label')->setOptions(array('escape' => false,'class' => 'buttonlink')); $show_captcha = Engine_Api::_()->getApi('settings', 'core')->core_spam_contact; if( $show_captcha && ($show_captcha > 1 || !Engine_Api::_()->user()->getViewer()->getIdentity() ) ) { $this->addElement('captcha', 'captcha', Engine_Api::_()->core()->getCaptchaOptions()); } $this->addElement('Button', 'submit', array( 'label' => 'Post Topic', 'type' => 'submit', 'ignore' => true, 'decorators' => array('ViewHelper') )); $this->addElement('Cancel', 'cancel', array( 'label' => 'cancel', 'link' => true, 'prependText' => ' or ', 'decorators' => array( 'ViewHelper' ) ));
Уточню, что в коде блоки обозначены как Element. Если быть конкретнее, Input надо вставить в элемент File.
Может "После" элемента file? file это input type='file'. Просто берешь и вставляешь после PHP: $this->addElement('File', 'photo', array( 'label' => 'Attach a Photo', 'size' => '0', )); $this->addElement('Text', 'title', array( 'allowEmpty' => false, 'required' => true, 'filters' => array( new Engine_Filter_Censor(), ), )); // и т.д
Нет, это input[type=text], который надо добавить в один div с input[type=file]. addElement я уже пробовал, но тогда input оборачивается в отдельный div. Проблема как раз в том, что мне надо добавить в уже существующий.
Нужно физически. И я прошу конкретной помощи, а не абстрактных советов. Пробовал пару скриптов, найденных в инете, но ничего не получилось.
Сомневаюсь вот прям очень сомневаюсь что тебе это нужно. Правильный совет с css тебе уже дали. Если хочешь переписать целyю ( я так подозреваю cms) у тебя есть extends Engine_Form значит там и нужно искать. Если не найдешь там смотри еще выше и еще выше. Или используй ide он быстро найдет addElement и покажет что там происходит.
Мне это очень нужно. Совет с css ни о чём без примера. Я специально привёл код, чтобы мне отвечали тем же. Что я должен искать в Engine_Form, выше и выше?
Исходя из вопросов тебе проще разобраться как с помощью css переместить объект туда куда нужно. Да нету здесь никакого кода. Код на 1000 классов а ты показал всего один который расширяет другой. В этом классе ты точно ничего сделать не сможешь. Ищи где формируется html и там создавай свой класс который будет принимать сразу 2 елемента. Это не PHP это ООП. Это как приложение на компе ты им пользуешься кнопочки нажимаешь настройки меняешь но код в другом месте. Обертка абстракция угадать не возможно
Приведи сначала свой пример, а если очень нужно и ничего не знаешь то на фриланс. Это не твой код, никто не знает что там внутри вызываемых методов каких-то классов.
@Anton25, должен быть метод addGroup(), в качестве параметров получающий массив готовых элементов, созданных, например, посредством метода createElement().
С помощью CSS нельзя поместить объект туда, куда мне нужно. Хватит писать чушь! Я в курсе про абсолютное позиционирование, но мне это не подходит.
А подробней не подскажешь? --- Добавлено --- Вы все такие умные, но ни один не привёл ни одного примера! Только бла-бла-бла...
Так я тебе уже подсказал должен быть метод addGroup() = тебе предстоит его создать под свои нужды которые решаются при помощи css ты просто этого еще не понял. А тот который есть если он есть добавляет уже с дивами. Не запутывай себя учи css --- Добавлено --- Пример чего? Ты показываешь нам кактус и спрашиваешь где у него штурвал.
@Anton25, вот, например, для Zend: Zend Form display groups decorators example Судя по коду из первого сообщения используется social engine. Ведь, например: